ddddddddddddddddddddddddolxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdxxxxxxxxxxxxxxxxxxxxxxxxxx
dddddddddddddddddddddddddlddddddxxxdxxxxxxxxxxxxxxxdxxxxxxxxxxxxxxxxxxxxddxdddddddddxdddddddddddddxdddddddddddddddddddddddddddddddddddddddddd
ddddddddddddddddddddddddoloooooooooddoooooodddddddddddddddddddddddddddddddddddddddddddddddooooooddooooooooooooooooooooooooooooooooooooooooooo
dddddddddddddddddddddddddcclllllc::llccllclloolooodooocccooooddddddoodooooooooooooooooooolollllllcllccc:::;;;:::;:;;;;;;;;,,;,,,;;,,,,,,,,,,;
dddddddddddddddddddddddddlcc::::::::cccccccllloooooooooooddddddddddddddddddddddddddddddooooooooooooooooollllllllllclllllccccccccllllllcccllll
xxxxxxxxxxxxxxxxxxxxdddddlcllllccc::::cclllllllllllllolloooooooooooooooooooooooooooooooooooooooolllllllllllllllllllllllllllllllllllllllllllll
xxxxxxxxxxxxxxxxxxxxxxdddoclllccc,'''';cclllllllllllllllllllllllllllllllloollllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
xxxxxxxxxxxxxxxxxxxxxxdddocclccc;''''.',;ccclllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllccllllllllllllllllllllllllll
xxxxxxxxxxxxxxxxxxxxxddddocccc::,......'':::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
xxxxxxxxxxxxxxxxxxxddddddo::;;,,.........''',,;:ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ddddddddddddddddddddddddooc;,'..............'''::::cccccccccccccccccccccccccccccccccccccccccccccccccc::::;;,;,;cc::cccccccccccccccccccccccccc
ddddddddddddddddddddddddooc;,'...'''......''',,;:::::::::::::::::::::::::cc::::::::::::::::::ccc:::::::;,,,',,;:c;:ccccccc:cc;;::::::::::::::
ddddddddddddddddddddddddooc;,'''',,,''''.'''''';:::::::::::::::::::::::::cc:::::::::::::::c::cccc::::;;;,',,,;:cc;:ccclccc:::,,::::::::::::::
dddddddddddddddddddddddddo:;,'................';::::::::::;;:;:::;:::::::cc:::::::::::::::c:ccccc:;;;,,,''''',ccc;:ccclccc:::,,::::::::::::::
dddddddddddddddddddddddddo:;,'................';::::::::::;;:;:::;:::::::cc:::::::::::::::c:ccccc:;;;,',''''',ccc;:ccclccc:::,,::::::::::::::
dddddddddddddddddddddddddo:;,'................';::::::::::;;:;:::;:::::::cc:::::::::::::::c:ccccc:;;;,,,''''',ccc;:ccclccc:::,,::::::::::::::
dddddddddddddddddddc;dooll:,,''..............'',:::::::::::::;;;;;;;;;:::cc:::::::::::,'::::;;;cc::;:;;;,,,,,;ccc;:ccclccc:::,,:::::::::;;;;;
ooooooooooooooooooo,.ooooll;,'''''',,,,,'''''',;:::::::::::::;:::::::,::::::::::cccc::..ccc::cccc::::::::::::::cc:cccclccc:::;:::::::::::::::
ooooooooooooooooooo,.cccccc,,::::cccccccccccccclcllcccc:::c::;:::cc::,:::cccclllolllc:.,cccccc;lc:ccccc:cccllllll:clllllllllllllcccc::::';:::
llc.:lc:;;,cllllllll:::::::;:clllllllllllllllllllllllllcccllcccccccclclllloloooooooollc:::lc:ccllllllllllllllll,'cloodx;llllllll.....,:,':::;
ll:.cllllllcllllllllllloooddodddxkkkOOOOOOOOOOOOOOO000O000000000000000000000000000000OO000000000000000000000000: oXXXNN000000000..dOKOdcd0000
::;.',;:c:..;:::::;:lldkO00KKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWWNNNNNNNNNNNNNNNNNNNNNNNNo..c:,..'0000NNNN;.;0NNXO0NNNN
::; .,' ,:::::,'clxKXNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXWWWWWWWWWWWWWWWWWWWWWWWWK ,WWWWWWWWWWWWWWWWW
::;.;:::::, .,;'. .clo0NWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXWWWWWWWWWWWWWWWWWWWWWWWWK .;:lNWWWWWWWWWWWWW
;lc.cl::,. .'......:ddkO00KKKKKKKKKKxddddddodKKKKKKK0ccccoxkcd0XXXXOldKKKKKKKKKK00XOoccccccccc:ccclcccc0KKKKKKKKKKKKKKKO;;;;;;;OKKKKKKKKklloO
;odxddl; ..;;;;:;;ldxxxkkkkkkkkkkkkkkkkkkkk:'kkkkkkkkkkkkkkc :lloo' 'kkkkkkkkldoc:. .:;,'.:kxoc,dkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk:
;llloo: .;;,,;;;;;ldddxxxxxxxxxxxxxdxxxxxx;'xxxxxxxdxxxxxxl ..;xxxxxxxd oxkkOc:ldxl oxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
;;;;:ccc;,.',,,,;;;loodddddo .oddddddddddoodc .dddddddlllllllddddddddddd .. .;dccclolc....dddd;.........:ddddo;cllllllol::::
,,,;;cllc;'',,;;;;cooodddddl .c,.ldddddddc'. ddddddddddddddddddddddddo od. .odddddddd dddd' .';l cddoo;:lccccccclooo