::;;;;;:lodddxxxxkkkkkkOkkkxxxxddooooldkxxxxxxx
:;;;;;;cloddddxxxxxxdollcccloddddooooodkxxxxxxx
::;;;;;cloddddo;,,'...'''',;;;cloooooookxxxxxxx
::;;;;;clodl'............',''''',:looooxxxxxxxx
::;;;;;lol,.....,............'....';codkxxxxxxx
::;;;;;ll....,coollc:;,,'',,'..'c;'.';dkxxxxxxx
::;;;;:c..';loodxkOOOOO0000Oxlcokkd:,.:xxxxxxxx
::;;;;:,'':lllooxkO000KKKKK00Okkkkkx,..dxxxxxxx
::;;;;:..'cccllodxO0000KKKK0OOkkkkkxl'.oxxxxxxx
:::;;;:'..;ccloodxO0KKKKKKKK0OOOkxxdc'.oxxxxxxx
:::;;;c,..,::ldxxxxkkO00OOkkkkkkkxxo;.'dxxxxxxx
:::;;;c:..'::c::;'.',ckOx:,...,;cdxo'.;xxxxxxxx
:::;;;cl...::;;,;,::;:k0Ol:l:locloxo':ckxxxxxxx
:::;;;cl,'.:lodooooddod0OkkkxxxkOOkdcdkkxxxxxxx
:::;;;llc:,;ldxOO00Odod00OOO0KKK0Oxlokkkxxxxxxx
:::;;:locc:,codkOkxdlldOOxoddxkOkkxdxkxkkxxxxxx
:::;;:looc:;;:llllol:'',',cdxdoododdoodkkxxxxxx
:::;;:lodddd,::llcc:::::cooolcoddodooodkkxxxxxx
:::;;:loddxx:;;cddc;:loodddlcdxxoolloodkkxxxxxx
:::;;:loddxxd,,;:oddlooooddxkOxocc:ooodkkxxxxxx
:::;;clodxxxkc'',;ldxddddxkOOxoc;;:coodkkkxxxxx
:::;;clodxd:.,''.',cdxkkkOkkdc,',:o.'cdkkkkxxxx
:::;;clodc. xl,,''',;cllc:;,'',cxNd...;::cldxk
:::;;cll; ,oOK0o;,,,''...''',;dXWW0 ..........
::,'... c0O0XXXKd;,,,,''',;oKWWWN0...........
.. o00KXXNNNXkc,'',:dKWWWWWWK...... ...
d0KXNNNNNXko:;:ckXWWWWWWWX..... ....
xXNXNNXOd' .....,lOKXWMWN..........
xXNNX0O0KOc. ...'XXNNXXXXK.. ....
kXNNNNNNNXKx. ..,WWWWWWWWX'. ....
xKXNWWWWWWNX.....KNWNNNNNK'.. .'...
xNNWWWWWWWWk ....lNNWWWWWN,.. :kx:
.dNWWWWWWWWW; ....,WWWWWWWN,.. .',.
.lNWWWWWWWWN.......NWWWWWWN,.. ..