kOOOOOOOOOd:;;;;;;;;;;:::::ccccccccccccccccc::;:llllolloxxkO00OkkKXXkdxxxk00OO0K
kkkkOOOOOOxc;;;;;;;;;;;:::::cccccccccccccccc::;;llcclccoddxkOOOkxxkxodddxkOOOO00
xxddxxxxkkd:;;;;;;;;;;;::::ldddolccclllolcc:::;;clcccc:lddxkOOOkxO00xodddkOOOOO0
OOOOOkkkkxdc;;;,;;;,,',;lxOKXXXXXOkOKK000Okdl:;;ccccc::codxkOOOkdk00xodddxkOkkOO
OOOOOOOOOOkooollodlc::ll,'';::cc:lxkx:.,::ldxdc;cc::::;cooxkOOkxooooloooodkkkkkO
0KKKKXXXXXXXKXXXXXNNN0:,,;;;',,,;,,;oo'...':cdd;:c:::;;:ooxkOOkxoollllooodxkkkkk
KKXXXKK0KK000K00XXKOoc,........';;,':;.''.':oOd:::::;;,;loxkOOkdlllc:cllldxkxxxk
loxxxxxkOOOOOOkkxl;,;,'....'''..';;;;''',;:dOOl:;:;;;;,;codkOOxdodkxxolllodddddd
,;::::cc:;;,''',,'.......''''..'.',,''',codk0K0xl:;,;:::odkO00K00kdoldkkxl::;;;;
.''''...........'.............'''..';;,cldkkO0KXKOxkO0K0XK00kkxolc::::;:codddooo
........  .......   ..............',,,;:cldxxkO0KK00OOkxdollcc:;;;:,,''',,..OKKK
.......     ............... .......''',,;;ccc:odollcllc:;;::::::;;,''...'''oXXXX
.. ..       ............  ..........'.''','.,,:;'',,;;,,,;;;,,;,,,,;,'...,lXXXXX
...           .......  ......  ....'..'.'.....'..'''''..',',,,,,,;;,''. ;'cXNNNX
....  ..            ....... .  ...........  ......'........''',',,,,,. .',,oXXXX
  .......                   ... ........ .. ....................'','.. .,,;xKXXX
  ..........               ..       . ....  ................'..'','''''',cOKXXKX
   ..............  ....            ......  .........    .........'''''.;kKKKXXXX
.  ............... .....           ........   ......   ...  ......... .cdxkO0XXX
..  .....  .... ...   ..             ... .               ..  ......  .:dkK00KXKK
                             ....  . .   .                 ...........;coxkO0KK0
     .. .............................................................';cclodkOOO
........................................'.........................',:ccllloddkkk