::::::::::::::::::::::::::::::::::::::::::::::lKNKKKKKKKKKK0l::::::::::::::::::::::::::::::::::::xKK
:::::::::::::::::::::::::::::::::::::::::::::OMMKKKKKKKKKKKKKl:::::::::::::::::::::::::::::::::::cOK
:::::::::::::::::::::::::::::::::::::::::::::KMWNKKKKXXXKKKK0l::::::::::::::::::::::::::::::::lOXWXK
:::::::::::::::::::::::::::::::::::::::::::::cKNKKXNXXXKKKKKKKl::::::::::::::::::::::::;;:dOXXNNXKOx
dl::::::::::::::::::::::::::::::::::::::::::lWMMXKKKKKKKKKKKKKOl::::xxd::::::::::::cll;'''''''''''''
0Kk:;;;::::::::::::::::::::::::::::::::::oKNWNXKKKKKKKKKKKKOxdool:,'cc:';:::::::::kO0Ooooooooooooxdd
kOOOO0Oo::::::::::::::::::::::::::ldkkkkOWNKKKKXWWWNXKKKKKk0NKx:::O0:::do:::::::lKMMMN0Oddloook00X00
,,oKXWW0cccccccccccclcccclclccclOWMWNXKOkOOKKxxxxxxxkKKKKKWMMKd','O0',,odccc::ccoKMMMN0O:'.'''x00X00
lcxKXWWXkkkkkkkkkkkkdddddddxkkOWXXK000koodxXXxddddddxxxkkkMMMKkxxx00dxxOdddddxkkkkMMMN00l''.''x00X00
KKKKXWWKkkkkkkkkkkkkdddddddxk0XOxlllllo0M0x00xdddddddddddxWMMKx;,,O0;;,oxkkkkO0000MMMN00000000000X00
;;dKO:,,,;;;;,,,;:lllddddddxxddlo''.'';0MOxxxxxxxxxxxxxxxxMMMKd',,O0';;odcccccccloWWWNOOxkxkxxOOOXOO
c:dKk',.,'''''.,';oocllllllooll:d,,',,c0MkOkolllllllllllllk0KKkddd00dddkdclllcllldMMMN00,'.,''x00X00
KKKKk'...''''..'';o:;;;;;;;;;,::kxxxxok0MkOddclclcd0OkccccllkOd...O0'..lo:cc:cc:ccl0MN00:.....x00X00
:;cdc',';,''''.,';:;:;:;;,,,,;;::,'.'';0MkOxl',','oK0k',,',,Oko,;;OO';;od;::c::::::;xX00kxxxxxO00X00
.......''..,,',,',:do,'....'clcod0c...';c;;lxxxxxxO000xxxxx:,'','',','''','''',''.....',;x00kxddxX0O
.........'....'.............'''d0Nxd'.......':lclcxKKk:c:c:'c''',,.''.'''','';:;''........:c........
..............................,'...'..........,.'.'.'.'..........''...'..',;clllllc:,...............
...............................'..............'...'..','.................'ollclllllclldko,..........
.......'....','''...............'','.,,'''....''..'.',''..''';,''.........cNKklllllokKOxx0x:........
,,,,,,,,,,,,,,,;,..'.'..'.'''',';:::;:::;:::c;::c;c::c;::c;c:c:;:::''...',,,xKNOoldkoc:::::::,',,,,,
....................................................................................................
''.''..,''.'.;cNNl''.........';,.;:,.::c.:;,,':';;;',c,.:::.;;',,:':'..........;;',:;.;::.;''..'.'''
''.'.'.,''..ckcNXl............,,';c'.:::.::,.;:';;,',:;.:::.::':';';;........''::',;:.:::.;:;.;,.'''
''.'''.,''.;KkcNMo...........';;';:,.:c'.;;,.;;.;;,';,;.:::.,:';;,';l......';,';;',::.;,:.::;';,',,'
''.,''.,''.OXxlMMo....'......;,;';;:.;l'.,,',,:.:Od'.c,.,;;..,.'c''';:...,.::,.;:',:c.;::.::;.::',::