::::::::::::::::::::::::::::::::::......
........................................
::;;;;,,,;;,;;;,;;::;,;;,;,;:;,,,,. .
:,ldx::kx:ddx;oxdc':xxx;kcd:.,xkcxlolcko ' ,O;xclolOd:kd;xxx;:ddccOx;xOclOd:kd' .
:'l0O:.0d'NxKdkKOo.oXxWoNNNl,.k0.0KXkdNx ' cMlKNNd'Wc'NO;K0Kcc0O:.Xo;KOx,Wc'NO'.;
:'okKx.Kx.XOXlk0,;,lNONlXOWl,'k0.0kOkdNo ' cMlKONd'Wc'Nk;Kx0dckKO'XooKkXcWl'Nk,cd
:;;ll;,c:':ll,::,::;cl:,l;l;;,:c'c:;,'::
' .:.;.,'.:..;:,;','.;;..;.',.:':,,odlld
:::::::::::::::::::::::::::::::::::.....
................................:odddddd
:::::::::::::::::::::::::::::::::::'....
.............................,cddddddddd
:::::::::::::::::::::::::::::::::::,....
...........................;lddddddddddd
:::::::::::::::::::::::::::::::::;;,....
........................':oddddddddddddd
:::::::::::::::::::::::::::::;,,''',,,,,
,,,'',,'','...........,ldddddddddddddddd
::::::::::::::::::::::::::;;,',,,;::ll:c :::::;;;,,,,,,''....:odddddddddddddddddd
::::::::::::::::::::::::;;;;,,;::cccclcl lodoolc:;,''''''..',codddddddddddddddddd
::::::::::::::::::::;;::;;;;;:loddoolloo xkkxddol:;,,,,'''..'';lddddddddddddddddd
::::::::::::::::::;;,,,,',;;:odxdxxxxxxx kOOkdl:,;::;,;;,''''''':dddddddddddddddd
,,,;;;:::::::::::;,,,,'',,;:ldddodkOOOOk kOOkd,.. .;:;,;::,,,''';oddddddddddddddd
,,,,,,,,,,;;;;;,'..'''.';;:loc'',cdkkkkk kkkxdc'.',::c:;;::,,,'';dddddddddddddddd
,,,,,,,,,,,,,,'......'.;::ldc...',cdxxxx xxdxkdoddxocllc;;:;,,'.cdddddddddddddddd
,,,,,,,,,,,,,''.''..'''::codoc:clodxxxxk kkkkkkxxdddlcll:cl;,;'.ldddddddddddddddd
,,,,,,,,,,,,',''''''',;cloxxdxkOOxxxkkkx lcc::coxxollclc;ldoccclddddddddddddddddd
,,,,,,,,,,,,,,,,,,,,;,:lodxxddkkkddkkkl'
.......ckdcc:lc:oddddddddddddddddddddddd
,,,,,,,,,,,,,,,,;,;;:;:cooddddxxdodkkk;.
.......;ddoccc;cdddddddddddddddddddddddd
,,,,,,,,,,,,,,,,,,,;:::ccodxxdddooxkkko,
.. ..lddollc:x0Okxxddddddddddddddddddd
,,,,,,,,,,,,,,,,,'',;::lddddxxxdoldxkkxd c,'..,:lol:lcloKXXXXXK00Okkxdddddddddddd
,,,,,,,,,,,,,,,,,,'',,,cdkkxxxkkkc:codol :,,'',,'..:odddKXXXXXXXXXXXXKK0Okkxddddd
,,,,,,,,,,,,,,,,,,,''',;oxO00Okxkxc'..,:
clodddol;,odxodXXXXXXXXXXXXXXXXXXXXXK0OO
,,,,,,,,,,,,,,,,,,,,,,;ldxkO0000kkxxc,':
odddddddl;ldxkKXXXXXXXXXXXXXXXXXXXXXXXXX
,,,,,,,,,,,,,,,,,,,,:odxxxxxxk00K0Oxxo;'
:olodoc;,:oOXXXXXXXXXXXXXXXXXXXXXXXXXXXX
,,,,,,,,,,,,,,,,,;coxxxxxxxxxxxxkkkkdoc:
:;,,;;,;okKXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
,,,,,,,,,,,,,,,;ldxxxxxxxxxxxxxxxxxxxxdO K0Oxxxk0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
,,,,,,,,,,,,,codxxxdloolcololollcllclcld xkkxxxxkxkkkkkxxkxxkkkXXXXXXXXXXXXXXXXXX
,,,,,,,,,,;cdxxxxxxolW00dWl;ONxddkl;dxkk oNX,kOk0cKKdxNxkX:lWxcKXXXXXXXXXXXXXXXXX
,,,,,,,,:ldxxxxxxxxolMOdoMl:XOK:Xk:d:K0.
dO0okXK0.kO,xN,kX:lWxoXXXXXXXXXXXXXXXXXX
,,,,,;coxxxxxxxxxxxocNc:cNxdXxX:kocx:xd.
OkkkkkxO.xk'K0:x0clXxlKXXXXXXXXXXXXXXXXX
,,,;ldxxxxxxxxxxxxxdllldlllllclclldxollc oxxxxxxxxxxxkkxxkxxkkkXXXXXXXXXXXXXXXXXX
,:odxxxxxxxxxxxxxloxd:ocll:cxxdoolocxxlo lkxoOxoOOdOOkoxdlkklddoxxXXXXXXXXXXXXXXX
dxxxxxxxxxxxxxxxdlWOWl0K0x;:xN:kKOKoMk;o cNNOWOlWxoMOWo0d:XXcdNO0lXXXXXXXXXXXXXXX
xxxxxxxxxxxxxxxxolWxNo0XWx:coN'xX0KoMx;o cNKNKOlWdlMxNd0ddK0xxXN0lXXXXXXXXXXXXXXX
xxxxxxxxxxxxxxxxdcxdx:ocdl:lcx'lold:Oo;l ckodlo:OolOxkcdlododolldoXXXXXXXXXXXXXXX
xxxxxxxxxxxxxxxxxxolodlllldxlcolllllccox ookkkkOkkkkkO0kkkOOkkOOkKXXXXXXXXXXXXXXX