kl:::cclllllldxxkkkkOOO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXkoooooolllllllllloolllloooooooddooodddddooooooooooodddddddddddoooooddddoooooollccc:::;;;;;;;;;;;;;;;;;,,,,,,,''''''.......',;;;;;;;;;;,,,,,,,,
xc:lxxxkkkO0000KKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0kkkxddxkkkdddxxkkkkxoxOOOkoodxkkkkkxdxkkkddxkkkxoxkOOkddddxkkkkddkOOkxddddxkkkdodxxxdlcccloddl:loddoc:::ldddddl:ll;,,;lc,;looolccccccccc:;,,,
OO00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXXKKKKKKKKKOxdkkxOOkkdodkxdookOoxOxddlldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxxOkdkOklcdOxc:xOOOkkxddddxxdddlcc
XXXXXNNXXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..'::,'cc.,dc'''lc',o:,::cdl;,;:cllxxlcldxo::clkdclOddkxkOdc::dOOkkkxdOOOkxkOOllOKKKKKKKOkO0KKKKOxo
XXXXXNNNNNXXXXXXKKKKK000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxooxdcoolddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,..;c,:l,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:coc;,;lkoccccoOxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOdllllc:cllc;;;,,cccc:,,;::;,,,';ccc:,.,;;,',;::;,..',,......';,'..',''......,,,..,;;;'.....,;,...'''......'.....':;;::;::;:x000000KKKKKKKKKKKX
000OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOO0d:;;;;;;;;;,'....'''''''''''...''..........................................................................................;cllllloodddkOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkOOOOkkkkkkOOOOOOOOO0000000000dlcccccc::::;;,'.....'',,,''''''''''.'''...................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkxxxxxxxxxxdo:;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxddl:;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc:;'',,;::cccc::::;;;;;;;;;;;;;;,;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKKKKKKKKK000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddddddddddolc:;,,',,;::;::::;;;;;;;;;;;;;;;;,,,,;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxdddddddooollloooooddddol::;,''',;;::::;;;;;;;;;;;;;;,;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxddddddddoollllllloooddddddddolc:;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddolllooodddddddddddddol:;,''',,;;:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddooooddddddddddddddddoolc:;,,''',;;::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddolllllllloooooooll:;;,'.'',,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKKK00OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxdddddddddoooolccclllllllllllllllc;,'',cclc::;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOO0OO0000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxxddddddddddoooooooollllc:ccclllll:''l000O00Od:;,,,,,,,,,;,;;;,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKXXXXXXXXXXXXKKKKKKKKKKKKKKKKK00000OOOOOkkkkkkkkkkkkxxxkkkOOO00K00OOOkkkkkkkkkxxxddddddddxxxxdoooolllllccc;..,d0KKXXXXOc,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKKXXXXXKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOOkkkkkkkkkkkxxxddddddddddooooooolllllc;'..':kKXXXXXXk:;;,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxxddddoooollllllllllllodl,...''dKXXXXXX0l:::;,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,'''''''''''''''''''
KXXXXXNNNNNNNNNNNXXXXXXXXXXXKKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOOO000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxxddoooooooooodxkd,.....cOXXXXXXKdoddollc:,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNXXXXXXXKKKKKKKK000OOOOOkkkkkkkkkkkkkkkkkOkkkkOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxo,......'dKXXXXXKOxdxkkxdddolc;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXXKKK000000OOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdo:'........l0KKKXXXX0dokkdllodxxxdolc:;;,',,,,,,,,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdo:.........;k0KKKXXXX0olxkxdddxxxxxxxxxxdlc;;,,,,,,,;;;;,,,,;,,,,,,,'''''''''''''
XXXXXKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdoc:,.........':ox0KKKKX0lcld0kxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxkxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxolc:;,''......'coodkOO00OOccloK0kxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,'''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdddddddooodddddddddddddddddddddddddxxxdlc::;,,,,,'....'dKOdoxkOOoccccdXXXOxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooodddddddddoc;;,,,,,,,,,,,'..oOxooxkOOoccclxXXXKOxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOOkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkxdoooooooooooooooooooooooooooooc;,,,''''',;cdo:''d0kxxxxkOkccloOXNXXXkxxxxddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkxdoooooolllllooooooloooooooool:;,'''''''';cddocckOxdoddxkOoclxXNNNXXKkxxddddddddddddddddoodooddddddddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkkkOOkkkOOOOOOOOOOOOkkkkxxddolllllllllllllllllloll:;,,,,,,'''''cl:;coolooodxk0x;;xKXXNNXXOxddoooooooooooooooolllllooooooooooooddddlc:;,,''
kkkxxxxxxxxxxxxkkxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkkxddolllllllllllllllllc;;;;;;;;;,;,,''''.'lkkkxxO0l'';kKXXXXXKxdoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllllloolc:;;;;::cdxlcll:,:xkkxxO00:'..ckKXXXXX0dollllllllllllllllllcccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdolllooollloooxkOOkxdc::cxxoxxl;cxkdcdOOko;'...,xKXXXXX0xolllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOO0000000000000Okxdooolloooodxk0KKKOo:cddllo:,lxkl:dxoc;'.....;OKKKXXXKkollllllllcccccccccccccccc:::::::ccccccccc:::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOOkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO00000000000000000000000OkddoooooxddOKXXX0o:::;;;,,;:::;;,,,'.......:kkxXXXXX0kollccccccccccccccccccc::::::c:::cc::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOO00000000000000K00000OOkdodkkk0KXXXKx:,,'''.....,,,'''.........,,;KK0XXXXOdlcccccccccccccccc:::ccccccc::::c::::::::
xxxxkkkkOOOOOOOOOOOOOOOOOOOOOO0OOOOOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOO00000000KKKK00KKK00000Ododxkk0KXXKk;'.........''''.............,0kx0XNX0xlcccccccccccccccccc:ccccc::cccccc:::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000000K00KKK0KKK00xooodddxO0Kx,........''''.......::'......::,oOOkdlccccccccccccccccc:::cc::::ccccccc:::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO00000000000KKKKKKKK00dlooooooooo:........'''''......'kx;.''......,dxlcccccccccccccccccc:::::::::ccccccc::::::::
kkkkkOOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000KKKKKKKK0Odlloddddool;.........''''......,OOc,:;'.....,ddlccccccccccccc:::c:::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOOO000000000KKKKOdllllddddl:....................'clc;::;;,'.,colcccccccccc:::c:::::::::::::::::::::::::::::
xxxxxxxkkkkOOOOOOOOOOOOOO000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO00000xolc:dkkkd,.....................,,;;;;;;;;;;ccccccccccccc:::::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdc::lk00:.....................',;;;;:;::::ccccccccccccccc:::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxl:;;:cl;...................''',;;;::::::cccccccccccccccc:::::::::::::::::::::::::::::::
kkkkOOOOOO000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxl:;,,,,'..................'''',;;::::::ccccccccccccccc:::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOOOkkoc;,''','.................'''',;;:::::ccccccccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0000000OOOOOOOOOOOOOOOOkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkkxdd:,'''c;.................',,;;;:::::c:cccccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkxxdddoolc,.'l:.................,::::::::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkkOOOOOOOOOOO000000000000OOkkxdddoooollllll;'..'''............',;:cc::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOOO0OOOOOOkxdoollllllllcccllllll,'.'''''.....'''',,cloccc::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000OOOOOOOOOOOOOkxxddooccccc:::ccccccccccccllllc,''''''''''';loooddkOxccc:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000000000OOOOkxdoolccccc:::::::::::::::ccccccclll:''''''''''',:xOOOOOOOxccc::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000Okxddoolccccccc:::::::::::::::::::::::ccclo;''.'''',;;;::oxxkxxkkxlcc::::::::::::::::::::::::::::::::::::::::;;:::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000Okxdolcccc:::cccccccc:::::::::::::::::::::::::;;''''',,,;;:::::cdxxxxddlc:::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOkddollcc:::::::::::::cccccc::::::::::::::::::::::;'..''''';;;;;;,,;;;:clllc:::::::;::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
ddxkkkkkkOOOOOOO0000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddolllllcc::::::::::::::::::::::::::::::::::::;;;:::::,.....'',:::::'.......,;;::;;;;;;;;;;;;::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;
cccccccccccccccccccllllllooooodddxxxkk0000KKK00Okxxddollllllllllcccc::::::::::::::::::::::::::::::::::::::;:::;'......',:::::'.......';;;;;;;;;;;;;;;;;::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::::ccccccloddooollllllllllllllllcccc::::::::::::::::::cccc::::::::::::::::;;;;,.......,;:::::'.......';;;;;;;;;;;;;;;;;;:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccclllllllllllllllllllllllccc::::::::::::::::::ccccc::::::::::::::::;;;;'......';;;;;;;'........,;;;;;;;;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::ccccccclllllllllllllllllllllllllccccc::::::::::::::::cccc:::::::::::::::::::;;;......';;;;;;;;,'........,;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::cccccccccccllllllllllllllllllllllllllccccccc:::::::::::::::::cc::::::::::::::;;;;;;;;,......',;;,,,,,,,'.........',;;;;;;;;;;;;;;;;::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;
::::::::::::::c:ccccccccccccccccccllllllllllllllllllllllllllcccccccccccc::::::::::::::c:::::::::;;;;;;;;;;,,'........',,,,,,,,,,,,'.......',;;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,
lcc::cccccccccccccccccccclllllllllllllllllllllllllllllllllcccccccccccccc::::::::::::::::::::::::;;;;;;,,,'...........',,,,,,,,,,,,,'.......,,,;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,
xdlccccccccccccccccclcllllllllllllllllllllllllllllllllllccccccccccccccc::::::::::::::::::::::::;;;,,,,''.............,,,,,,,,,,,,,,,,......'',,;;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,
llllccccccccccccclllcccclllllllllllccccclllllllllllllllcccccccccccccccc::::::::::;;,;;;;;;;;:;;,,,,''..............',,,,,',,,,,,,,,,,........',;;;;;;;::;;::::::::::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
cccccccccccccccccccccccccccccccccccccccclllcccccllllllcccccccccccccccccc:::::;;;;;,,,,,,,;;;;;;,,''..............'',,,,,,''',,,,,,,,.........'',,;;::;:;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
cccccccccccccccccccccccccclccccccccccccccccccccllllllccccccccccccccccccc:::::;;;;;,,,,,,,,;;;;;,,'.............'',,,,,,,,,,,,,,,,,,'...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloolllcccccccccccccccccc::::::;;;;;,,,,,,,,;;;::;,'''.....'''',,,,,,;;;;;;;;;;;;;,,,''..........'',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccllloollcccc::cc:::::::::::::::::;;;;;,,,,,,;;;:::::;;;;,,,,,,,,,;,,,,,,,;;,;;;;;;;;;;,,''............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccccllllcccclloooollcccccccc::::::::::::::::::;:::::::cc::ccccc::::::;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;,,'.............',;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccllllllllllllooooolcccccccccccccccccccccccc::;,;;::cclcccccccc:::::::;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;,,''...........',;;;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::cccccccccccccccccccclllllllllllllooooccccccccccclllllllcccccccc:;,,;;::::::::::::::::::;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;,,,'......',;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllllllllodooooollllllllllllllccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc:::::::::cccccccccllolllllllllllllllooooollllllcccccccccc::::::::::::::::;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;:::::;;;;;::;;;;;;;;;;;;;,,;;,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllolllllllllllllllllllllccc:::::::::::::::::::::::::::;;;:::::::::;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
:::::::::::::::::::::::ccclllllllllllllllccccccccccc:::;;;;:::::::::::::::::::::::;;;::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::ccccccccccccllllccccccc:::::::;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::::::::::::ccccllccccc::::::;;;;;;;;::::::::::::::::::::::::::c:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,'','',,''''''''''',''''''''
::::::;;;:::::;;;;;;;;;:::::::::ccccccccccc:::;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
:::;;;;;;;;;::;;;:;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;:::::::::::::::::;::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;::::::::::::::::ccccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::::;;;;;::::::::;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllcccccccccc::::::;;;;;;;;:::;;;;;;;;;:::;;;;;;;;;;::cc::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::cllllllccccccc::::::::;;;;;;;;;;;;;;;;;;:;;;;;;;;:::;:::::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;::cllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc::::c::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;,;;;;;;;;,;;;;;;;,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::ccc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc:;;:::::;;;;;;;;;;:::c::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;,;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''.
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;:::::;;;;;;;;;;;;;,,,;;;;,;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''...
::;;;::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,''''''''',''',,,,,,,,''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''...
::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;,;;;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''....
;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;,,,,;::;;::;;,,,,;;;;;;;,,,,;;,,,,,,,,,,,;,,,,,,,;:;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,''''''''''''''''''''''''''''''''''''''''''''''''''...
;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,;;;;,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''...''.........'
;;;;;;;,,;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,;;;;,,,,,,;;;,,,,,,,;;,,,,,;;;;;,,;,,;;;,,,,,,,,,,,;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,''',,'''',,,,,,,''',''','''''''''''''''''''''..''....................
;,;;;;;;;;;;,;;;;;;;:c;;;,,,;;,,,;;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,;,,;;;;,,;;;,,,,,,,,,,,,,,;;;,,,,,;;,,,,,,,,,;;,,,,,,,,,''''''''''''''',''''',''','''''''''''''''''''''........................
d;;::::llcclldxxxkkkkOO0xKK0XXXXXXXXXXXKKXXXXXXXXXXXXXXXX0koooooollllllllloooollloooooooddooodddddooooooooooooodddddddddoooooddddoooooollccc:;:;;;;;;;;;;;;,;,;,,,,'',,'''''........',,;;,;;;;;;,,,',,,,
dc:lxxxxxkOOO00K00KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXXXX0kxkkddxkkkxddxxkkkkxoxOkkxoodxkkkkkxdxkkkddxkkkxoxkkOkddddxkkkkddkOOkxddddxkkkdodxxxdlcccloddl:loddoc:::ldddddc:ll;,,;lc,;loollccccccccc,,,,,
OO00KXKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXKKKKOxdkkxOOkkdodkxdookOoxOxddlldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxxOkdkOklcdOxc:xOOOkkxdddddxddolc:
XXXXXNNXXXXXXXXXXXXXXXXKKKKKK000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..'::,'cc.,dc'''lc',o:,::cdl;,;:cllxxlcldxo::clkdclOddkxkOdc::dOOkkkxdOOOkxkOOllOKKKKKK0OkO0KKO0Odo
XXXXXNNNNNXXXXXKKKKKK000OO0OOOOOOOOOOOOkkOOOOOOOOkkOOOOOOOxkoldocollddodc:oxxlc:cc::o:cc,cdol:,;l;;c;':lc,..;c,:l,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:coc;,;lkoccccoOxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXKKK00O0OOOOOOOOOOOOOOOOOkkOOOkkOOOOOOOOOOOOOOOOkdclcc::cclc;;;,,cccc:,,;::;,,,';ccc:'.,;;,',;::;,..',,......';,'..''''......,,,..,;;;'.....,;,...'''......'.....':;;::;::;:x000000KKKKKKKKKKKX
000OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkxxkkkOOOOOOOOOOOOOOOOOOOd:;;;;;;;;,,'....'''''''''''...''..........................................................................................:cllllloodddkOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOO00000000000dcccccc:::::;;,'.....'',,,''''''''''''''...................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkxxxxxxxxxxdo:;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxddl:;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
000000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc:;'',,;::cccc::::;;;;;;;;;;;;;;,;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKKKKKKK000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;;;;;;;;;;;,,,,;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO000OO0OOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxdddddddooollloooooddddol::;,''',;;::::;;;;;;;;;;;;;,,;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollllllloooddddddddolc:;,',,;;:::::;;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddolllooodddddddddddddol:;,''',,;;:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxddoooodddddddddddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddollllllllooooooolc:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000KKKKKKK00OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddooooolccclllllllllllllllc;,'',ccccc:;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOOO00000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxxddddddddddooooooooolllc:ccclllll:''lO00OO0Okl;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKXXXXXKKKXXKXKKKKKKKKKKKKKKKKK00000OOOOOkkkkkkkkkkkkxxxkkkOOO00K00OOOkkkkkkkkxxxxdddddddddxxxdoooolllllccc;..,o0KKKXXXKd;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKKXXXXXXXXXXXK0XXXXXKKKKKKKKKKKXXXXXKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOOkkkkkkkkkkkxxxddddddddddooooooolllllc;'..':xKXXXXXXKo;;,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkOOOOOOO0000K0000Okkkkkkkkkkkkkxxxxddddoooollllllllllllool,....'oKXXXXXXXx:::;,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,'''''''''''''''''''
KXXXXXNNNNNNNNNNXXXXXXXXXXXXKKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOOO000000000OOkkkkxxxxxkkkkkkkkxxxxxxxxxxddoooooooooodxkx;.....:kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNXNXXXXXXXKKKKKKKK000OOOOOkkkkkkkkkkkkkkkkkkkkkkOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxd:......'l0XXXXXXKxdddxxdddolc;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXXKKK000000OOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........;kKKKXXXXXkoxOdllodxxxdolc:;;,',,,,,,,;,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........'dO0KKXXXXXxcdOxdddxxxxxxxxxxdlc;;,,,,,,;;;;;,,,;;,,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxolc,..........;lx0KKKKXKocld0kxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxkxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,''..''...,llokOO000OlccoK0kxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,'''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdddddddooddddddddddddddddddddddddddddxxocc:;;,,,,,.....lK0kddxOOdlcccdXXX0kxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;,,,,,,,,'...cOkdodxkOdccclxXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdoooooooooooooooooooooooooooooc;,,,'''''',:lo:'.cOOxxxxxkxccloONNNNXOxxxddddddddddddddddddddddddddxxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollllooooooloooooooool:;,'''''''';cdxdc;dOkoooldkOoclxKNNNNXXkxdddddddddddddddddoodooddddddddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkkkkkkkkOOOOOOOOOOOOOOOkxxddollllllllllllllllooool:;,,,,,,''''':lc::ldllllldkOx::kXXXNXXX0xdoooooooooooooolloollllooooooooooooddddlc:;,,''
kkkxxxxxxxxxxxxkkxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkkxddolllllllllllllllol:;;;;;;;,,,,'',''''.,dxkxdxOd'';OKXXXXXXkooolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoollllllllllllllol:;;;;;;;;;cl:;;c:,,ckkkdxkOc..'lOKXXXNXKxollllllllllllllllllcccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdollloolllloodxkxxxdlc::cdxdxxd:;lkkoclxkd;'...;kKXXXXX0dolllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOdO0000000000000OkxdooolloooodkO0KKKkl::ddldxo;:xkkc;cc:;'.....;OKXXXXXKkollllllllcccccccccccccccc:::::::ccccccccc:::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOOkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO000000000000d:c00000000Okdooooodddx0KXXKkl:ll:::;,;lol:;,,,'.......:k0OXXXXX0xollcccccccccccccccccccc:::::c:::cc::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOO000000;  ,,,,,kK0000OOxdodkkk0KXXXKd:;;,,,'''..,,,'''.........:::KXKXXXXOdlcccccccccccccccc:::ccccccc::::c::::::::
xxxxkkkkOOOOOOOOOOOOOOOOOOOOOO0OOOOOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOO00000;       :OKK00000OddxkkOKXXXXk:''........'''.'............,0Ox0XXX0xlcccccccccccccccccc:ccccc::cccccc:::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOkxO00;       l0KK0KKK00doodddxOKXKk,........''''.......cl,......::,lOOOxoccccccccccccccccc:::cc::::ccccccc:::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOkd;cx0xc.    .KKKKKKKK00dloooooddddc........'''''......,OOc''.......'dxocccccccccccccccccc:::::::::ccccccc::::::::
kkkkkOOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOk:ok0k;:::lKKKKKKKK0Oolooddooool;.........''''......,kOl,:;'.....'odlccccccccccccc:::c:::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOOO00OkO000k0KK0Oollodddollc'.........'..........:c:;::;,,..':olcccccccccc:::c:::::::::::::::::::::::::::::
xxxxxxxkkkkOOOOOOOOOOOOOO000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxxox000Odlccldxdl,'.....................,,;;;;;;;;,;ccccccccccccc:::::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxl::okOx:......................',;;;;;:::::ccccccccccccccc:::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOko:;;:cc,...................'''',,;::::::::ccccccccccccccc:::::::::::::::::::::::::::::::
kkkkOOOOOO000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOko:;,,,,'...................'''',;;:::::::cccccccccccccc:::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOkOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOOOko:,,''''...................'''',;;:::::::cccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0000000OOOOOOOOOOOOOOOOkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkdc;,''''...................'''',;:::::c:::ccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkxxxxol:;'.:d;..................,::ccc::::::::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkkOOOOOOOOOOO000000000000OOkkxdddoooooooll:..';,................',:looolc:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOOO0OOOOOOkxdoolllcclllllllooll,..''''''''........',;:llooddl::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000OOOOOOOOOOOOOkxxddooccccc:::cccccccclllloolc,..'''''''''.....'';::lOOOOOkl:::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOOOkxdoolccccc:::::::::cccccccclooollc;'.''''',,,''....',;:::lkOOO0kl::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOxddoolccccccc::::::::::::::::::cccllooc;''.''''','''''...,,;;;::coxxxxlc:::::::::::::::::::::::::::::::::::;::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000Oxxdolcccc:::cccccccc::::::::::::::::::;'..,;,''''''''''''',''..,,;;;;;:cloddoc:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOkddollccc::::::::::::cccccc::::::::::::::::;'......',,,,,,;;,,,,;;;,,,;;;;,''',,,;:::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
00000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::::::::::,.......';;;;;;;;;;;;;;;;;;;;;;........,;;;;;::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;
cclllllllllllooooddodddddxxxxxkkkOO0KKKKKKKKKK00Okxddollllllllllcccc:::::::::::::::::::::::::::::::::::::'.......;;::::;::;;;;;;;;;;;;;;........,;;;;;;::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::ccccccllodxxxxdooolllllllllllllllcccccc:::::::::::::::::::c::::::::::::::::'.......;;::::;;;;;;;;;;;;;;;;;........,;;;;;;;:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccclllllllllllllllllllllcccccc::::::::::::::::::cccc::::::::::::::::;.......;;;;;;;;;;;;;;;;;;;;;;;'.......';;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::cccccccccclllllllllllllccccccccccccc::::::::::::::::::::::::::::::::::::::'......';;;;;;;;;;;,,,,,,,,,,;,........;;;;;;;:::::::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::ccccccccccccccccccccccccccccccccccccc:::ccccc:::::::::::::::::::::::::::::::;;;;;;'........',,,,,;,,,,,,,,,,,,,,........;;;;;;;;;;::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;
::::::::::::::::::cccccccccccccccccccccccccccccccllllllllcccc:::::::cc::::::::::::::::::::::::::;;;;;;;;;;,'.........',,,,,,,,,,,,,,,,,,,.......';;;;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,
::::ccccccccccccccccccccccccccccccccccccccccccccclllllllllccc::::::::::::::::::::::::::::::;;;;;;;;;;;,,,'...........',,,,,,,,,,,,,,,,,,,......';;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,
lcccccccccccccclllllccccccccccccccccccccccccccccclllllllccccc::::::::::::::::::;;;;;;;;;;;;;;;;;,,,,,'''............',,,,,,,,,,,,,,,,,,''......,;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,
llccccccccccccccllllcccccccccccccccccccccccccccccllllllccccc:::::ccc:::::::::;;;;;;,,;;;;;;;,,,;,,,''.............'',,,,,''',,,,,,,,,..........,;;;;:;;;;;;:::::::::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
cccccccccccccccccccccccccccccccccccccccccccccccccllllccccccc:::::ccccc::::::;;;;;;,,,,,,,,,,,,,,,,'.............'',,,,,,''''',,,,,,,...........,;;;::;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
cccccccccccccccccccccccccccccccccccccccccccccccclllllccccccc::::cccccc::::::;;;;;,,,,,,,,,,,,,,,,''...........'',,,,,,,,,,,,,,,,,,,'...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccccllolllccccccc:::::cccccc:::::;;;;;;,,,,,,,,,;;;;,,''......''',,,,,,,;;,;;;;;;;;;;,,,'...........'',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccllloollcccc::c:::::::::::::::::;;;;;;,,,,,,;;;;:::;;,,,,,,,,,,,,;,,,,,,,;;,;;;;;;;;;,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccllloooollcccccccc:::::::::::::::::;;::::::::::::cccc:::;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;,,''.............',;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccclllllllllllooooolcccccccccccccccccccccccc::;,;;::clcc::cccc:::;;::::;;;;;;;;;,,,,;;;;;;;;;;;;;;;;,,,,''...........',;;;;;;;,,;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccccccccccccccccccllllllllllllloooolcccccccccclllllllccccccc::;,,;;:::::::::::::::;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;,,'''......',;;;;;;;;,,;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllllllllooooooollllllllllllllccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc:::::::::cccccccccllolllllllllllllllloooollllllcccccccccc:::::::::::::::;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;::::;;;;;;::;;;;;;;;;;;;;;,;;,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloolllllllllllllllllllllccc:::::::::::::::::::::::::::;;;:::::::::;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
:::::::::::::::::::::::ccllllllllllllllllccccccccccc:::;;;;:::::::::::::::::::::::;;;::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::ccccccccccccllllccccccc:::::::;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::::::::::::ccccllccccc::::::;;;;;;;;::::::::::::::::::::::::::cc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,'','',,''''''''''',''''''''
::::::;;;:::::;;;;;;;;;:::::::::ccccccccccc:::;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;::;;;:;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;:::::::::::::::::;::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;::::::::::::::::ccccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::::;;;;;::::::::;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllcccccccccc::::::;;;;;;;;:::;;;;;;;;;:::;;;;;;;;;;::cc::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::cllllllccccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;:::::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc::::c::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;,;;;;;;;;,;;;;;;;,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::ccc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc:;;:::::;;;;;;;;;;:::c::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;,;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''.
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;;::::;;;;;;;;;;;;;,,,;;;;,;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''...
::;;;::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,''''''''',''',,,,,,,,''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''...
::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;,;;;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,'''''''''''''''''''''''''''''''''''''''''''''''''....
;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;,,,,;::;;::;;,,,,;;;;;;;,,,,;;,,,,,,,,,,,;,,,,,,,;:;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,''''''''''''''''''''''''''''''''''''''''''''''''''...
;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,;;;;,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''..'''.........'
;;;;;;;,,;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,;;;;,,,,,;;;;,,,,,,,;;,,,,,;;;;;,,;,,;;;,,,,,,,,,,,;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,''',,'''',,,,,,,''','''''''''''''''''''''''''..''....................
;,;;;;;;;;;;,;;;;;;;:c;;;,,,;;,,,;;;;,,,,,,,,;;;;,,,,,,;,,,,,,,,,,;,,,,,,;,,;;;;,,;;;,,,,,,,,,,,,,,;;;,,,,,;;,,,,,,,,,;;,,,,,,,,,''''''''''''''',''''','''''''''''''''''''''''''........................
d;;::::llcclldxxxkkkdxO0dKK0XXXXXXXXXXXXXXXXKKXXXXXXXXXXX0koooooollllllllloooollloooooooddooodddddooooooooooooodddddddddoooooddddoooooollccc:;:;;;;;;;;;;;;,;,;,,,,'',,'''''........'',,,,;;;;;,;;;,,,,,
dc:lxxxkxkOOO00K00KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXKXXXXX0kxkkddxkkkxddxxkkkkxoxOkkxoodxkkkkkxdxkkkddxkkkxoxkkOkddddxkkkkddkOOkxddddxkkkdodxxxdlcccloddl:loddoc:::lddddoc:ll;,,;lc,;looolccccccccc,,,,,
OO00KXKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKX0XXKKKKOxdkkxOOOkxodkxdookOoxOxddlldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxkOkdkOklcdOxc:xkOOkkxdddddxxdolcc
XXXXXNNXXXXXXXXXXXXXXXKKKKKKK000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..'::,'cc.,dc'''lc',o:,::cdl;;;:cllxxlcldxo::clkdclOddkxkOdc::dOOkkkxdOOOkxkOOllOKKKKKK0OkO0KKO0kdo
XXXXXNNNNNXXXXXKKKKK0000OO0OOOOOOOOOOOOkkOOOOOOOOkkOOOOOOOkxlldocollddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,..;c,:l,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:coc;,;lkoccccokxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXKKK00O0OOOOOOOOOOOOOOOOOkkOOOkkOOOOOOOOOOOOOOOOkdlllc::cclc;;;,,cccc:,,;::;,,,';ccc:'.,;;,',;::;,..',,......';,'..''''......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:dO00000KKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkxxkkkOOOOOOOOOOOOOOOOOO0d:;;;;;;;,,,'....'''''''''''...''..........................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOO0000000000dccccc::::::;;,'.....'',,,''''''''''.'''...................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkOOOkkOOOOOOOOOOkkxxxxxxxxxxxdo:;'..';:ccccccc::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxddl:;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
000000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc:;'',,;::cccc::::;;;;;;;;;;;;;;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;;;;;;;;;;;,,,,;;,;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO000OO0OOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxdddddddoooollooooodddool::;,'.',;:::::;;;;;;;;;;;;;,,;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollllllloooddddddddocc:;,',,;;:::::;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddolllooodddddddddddddol:;,''',,;;:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxddoooodddddddddddoddddoolc:;,,''',;;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddolllllllloooooooll:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKKK00OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddooooolccclllllllllllllllc;,'',clllc::;,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOO0000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxdddddddddddooooooooolllc:ccclllll:''lOK0OO0Okl;;,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKXXXXXKKKXXKKKKKKKKKKKKKKKKKKK00000OOOOOkkkkkkkkkkkkxxxkkkOOO00K00OOOkkkkkkkkxxxxdddddddddxxxdoooolllllccc;..'o0KKKXXXKd;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKXXXXXXXXXXXXK0XXXXXKKKKKKKKKKKXXXXXKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOOkkkkkkkkkkkxxxdddddddddooooooollllllc;'..':xKXXXXXXKo;;,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkOOOOOOO0000K0000Okkkkkkkkkkkkkxxxxddddooooolllllllllllool,...''oKXXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,'''''''''''''''''''
KXXXXXNNNNNNNNNNXXXXXXXXXXXXKKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOOO000000000OOkkkkxxxxxkkkkkkkkxxxxxxxxxdddoooooooooodxkx;.....:kKXXXXXKkdddollc;,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNXNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkkOOkkOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxd:......'l0XXXXXXKkdddxxdddolc;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXXKKK000000OOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........;OKKKXXXXXkoxOollodxxxdolc:;;,',,,,,,,;,,,,,,,,;;;,,,,,,'''''''''''''
NNXXXXKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOkkOOOOOOOOOOOOOOOOOkkkkkkkkkkOkkkkkkkkkkkkxxxxxxxxxxxxxxxxdo:.........'dO0KKXXXXXxcdOxdddxxxxxxxxxxdlc;;,,,,,,;;;;;,,,;;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxol:'..........;lxOKKKKXKocld0kxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,''..''...,lloxOO000OlccoK0kkxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,'''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdddddddooddddddddddddddddddddddddddddxxoc::;,,;,,,.....lK0kddxOOdlcccdXXX0kxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;,,,,,,,,'...cOkdodxkOdc:clxXNXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdoooooooooooooooooooooooooooooc;,,,'''''',:lo:'.cOkxxxxxkxccllkNNNXX0kxxdddddddddddddddddddddddddddxxdoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollllooooooloooooooool:;,'''''''';cdxdc;dOxoolldkOoclxKNNXXXXOxdddddddddddddddddoodooddddddddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOOOOOOOOOOkxxddollllllllllllllllooool:;,,,,,,'''''clc::odllllldkkk::kXXXNXXXKxdoooooooooooolllloollllooooooooooooddddlc:;,,''
kkkxxxxxxxxxxxxkkxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkkxddolllllllllllllllll:;;;;;;;,,,,'',''''.,dxxddxOd'';kKXXXXXXOdoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoollllllllllllllolc:;;;;;;::cl:,;c:,,cxkkddkOl..'lOKXXXXXXkollllllllllllllllllcccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdollloolllloodxkkkxxoc:::dxdxxd:;lkkoclxxd;'...;kKXXXXX0xolllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkO0000000000000OkxdooolloloodkO0KK0xc::doldxo;:xkkc;cc:;'.....;OKXXXXXKkollllllllcccccccccccccccc:::::::ccccccccc:::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOOkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO000000000000d:c00000000Okdooooodddx0KXXKOl:ll::::,;lol:;,,,'.......:k0OXXNXX0xollcccccccccccccccccccc:::::c:::cc::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOO000000;  ,,,,,k00000OOxdoxkkk0KXXXKx:;,,'''''..,,''''.........;c,OXXXXXXOdlcccccccccccccccc:::ccccccc::::c::::::::
xxxxkkkkOOOOOOOOOOOOOOOOOOOOOO0OOOOOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOO00000;       :OKK00000OodkkkOKXXXXk:''........'''..............'O0xOXXX0xlcccccccccccccccccc:ccccc::cccccc:::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000;       l0KK0KKK00doodddxk0KKx,........''''.......:o,......;:,ckOOxlccccccccccccccccc::::c::::ccccccc:::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000xc.    .KKKKKKKK0Odloooooddddc........'''''......'k0l'''.......oxoccccccccccccccccccc::::::::ccccccc::::::::
kkkkkOOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00k;:::cKKKKKKKK0kolooddooool;.........'''.......'xOo;;:'.....'odlccccccccccccc:::c:::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOOO00000000k0KK0xlllodddollc'....................;::;:;;,'..':oolccccccccc:::c:::::::::::::::::::::::::::::
xxxxxxxkkkkOOOOOOOOOOOOOO000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxO000kdlccokkdl,'.....................,,;;;;;;;;,;ccccccccccccc:::::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOko:;:dOOx:......................',;;;;;:::::ccccccccccccccc:::::::::::::::::::::::::::::::
xxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkl:;;;:cc,...................'''',;;;:::::::ccccccccccccccc:::::::::::::::::::::::::::::::
kkkkOOOOOO000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOxc;,,,,,''...................'''',;;:::::::cccccccccccccc:::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOkOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOko:;,,'''......................''',,;:::::::cccccccc:::::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK00000000OOOOOOOOOOOOOOOkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOOkdoc;,,''''.....................''',;:cc::c:::ccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOkxool:::;'.,dc...................'';:lllolc:::::::::c:::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkOOOOOOOOOOOOO000000000000OOkkxddddooolcccc,.':;''''''''''........'';clloodoc::::::::::::::::::::::::::::::::::::::::::::::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdoolcclllooooolccc:'..'''',,,,,,,,,.....',;;;:dxxxkxlc:::::::::::::::::::::::::::::::::::::::::;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000OOOOOOOOOOOOOkxxddooccccc:::c:cclooooollcc:;'.''''',,,;;;;;;,''',;:::::xOOOOOdc::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000000000OOOOkxdoolccccc::::::::::::::cllllllc:;,''''''',,;;;;::;;,,',;;::::ldkkkkxl:::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000Okxddoolccccccc::::::::::::::,....';::::;,''''''',,;;;:;:::;;,',,;;;;::clodddl:::::::::::::::::::::::::::::::;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000Okxdolcccc:::cccccccc::::::::::::;........';;,''''''',;;;;;;;;;:::;,,;;;;;;;;:ccccc:::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOkddollcc:::::::::::::cccccc:::::::::::'........,,,,'',,,,;;;;;;;;;;;;;;;;;;;;;;'.......';::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddolllllcc:::::::::::::::::::::::::::::::::'........,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,........;:::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;
llllllllooooooooodddddxxxxxxxkkkkO00KKKKKKKKKK00Okxddollllllllllcccc::::::::::::::::::::::::::::::::;'........,;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;........,::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::ccccccllodxxxxddoolllllllllllllllccccc:::::::::::::::::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,........,::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccclllllllllllllllllllllcccccc::::::::::::::::::ccc:::::::::::::::,......';;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,........,;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::cccccccclllcllllllcccccccccccccccccc::::::::::::::::::::::::::::::::::::;........',,;;;;;;;;;,,,,,,,,,;;,,,,,'........,;;::::::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::ccccc:::::::::::::::::::::::::::::::;;;;;..........',,,,,,,,,,,,,,,,;;,,,,,,........,;;;;;::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;
::::::::::::::::::cccccccccccccccccccccccccccccccclllllllcccc:::::::cc::::::::::::::::::::::::::;;;;;;;;;,'..........,,,,,,,,,,,,,,,,,;,,,,,'.......,;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,
:::::::cccccccccccccccccccccccccccccccccccccccccclllllllllcc:::::::::::::::::::::::::::::::;;;;;;;;;;;,,,...........',,,,,,,,,,,,,,,,,,,,,,'.......,;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,
::::ccccccccccclllllccccccccccccccccccccccccccccclllllllcccc::::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,'''...........',,,,,,,,,,,,,,,,,''.........'',;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,
::::ccccccccccccclllccccccccccccccccccccccccccccclllllccccccc::::cccc:::::::;;;;;;;,,;;;;;;;,,,;,,,''............'',,,,,,'',,,,,,,,,,...........,;;;;;;;;;;:::::::::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllccccccc:::::ccccc:::::;;;;;;;,,,,,,,,,,,,,,,,'............'',,,,,,,,''',,,,,,,,'...........,;;:::;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::ccccc:::::ccccccccccccccccccccccccccccccccclllllccccccc::::cccccc::::::;;;;;,,,,,,,,,,,,,,,,''............',,,,,,,,,,,,,,,,,,,''...........,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccccllolllccccccc:::::cccccc:::::;;;;;,,,,,,,,,,;;;;,,''......''',,,,,,,,;;;;;;;;;;;;;,,'............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllloollcccc::c:::::::::::::::::;;;;;;,,,,,,;;;;:::;;,,,,,,,,,,,,;,,,,,,,;;,;;;;;;;;,,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccclloooollcccccccc:::::::::::::::::;;::::::::::::::c:::;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;,,''.............',;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccclllllllllllooooolcccccccccccccccccccccccc::;,;;::clcc::cccc:::;;::;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;,,,,,'...........',;;;;;;;,,;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccccccccccccccccccllllllllllllloooolcccccccccclllllllccccccc::;,,;;::::::::::::::;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;,,'''......',;;;;;;;,,,,;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllllllllooooooollllllllllllllccc::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,;;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc:::::::::cccccccccllolllllllllllllllloollllllllcccccccccc:::::::::::::::;;;:::::::::;:::::;;;;;;;;;;;;;;;;;;;;::::;;;;;;::;;;;;;;;;;;;;;,;;,;;;;;;,,,,;;;;;,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloolllllllllllllllllllllccc:::::::::::::::::::::::::::;;;:::::::::;;::::;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
:::::::::::::::::::::::ccllllllllllllllllccccccccccc:::;;;;:::::::::::::::::::::::;;;::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::ccccccccccccllllcccccc::::::::;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::::::::::::ccccllccccc::::::;;;;;;;;::::::::::::::::::::::::::c:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,'','',,''''''''''',''''''''
::::::;;;:::::;;;;;;;;;:::::::::ccccccccccc:::;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;::;;;:;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;:::::::::::::::;:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;::::::::::::::::ccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;::::::::;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclllccccccccc::::::;;;;;;;;:::;;;;;;;;;:::;;;;;;;;;;::cc::;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;:::::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:::;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc::::c::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;,;;;;;;;;,;;;;;;;,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::ccc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc:;;:::::;;;;;;;;;;:::c::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;,;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''.
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;;::::;;;;;;;;;;;;;,,,;;;;,;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''...
::;;;::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,'''',,,',,''',,,,,,,,',''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;,;;;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,'''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;,,,,;::;;::;;,,,,;;;;;;;,,,,;;,,,,,,,,,,,;,,,,,,,;:;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,''''''''''''''''''''''''''''''''''''''''''''''''''...
;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,;;;;,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''..............'
;;;;;;;,,;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,;;;;,,,,,;;;;,,,,,,,,;,,,,,;;;;;,,;,,;;;,,,,,,,,,,,;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,''',,'''',,,,,,,,'','''''''''''''''''''''''''........................
;,;;;;;;;;;;,;;;;;;;:c;;;,,,;;,,,;;;;,,,,,,,,;;;;,,,,,,;,,,,,,,,,,;,,,,,,;,,;;;;,,;;;,,,,,,,,,,,,,,;;;,,,,,;;,,,,,,,,,;;,,,,,,,,,''''''''''''''',,'''',''''''''''''''''''''''''.........................
kc;::ccllcclloxxxkkkOOO0OXXXXXXXXXXXXXXXKKXXKKXXXXXXXXXXX0xoooooolllllllllloollllooooooodddoddoooooooooooooooodddddddddooooooodddoooooollccc::::;;;;;;,;;;;;;;;;,,,''''''''''.......',;;;;,;;,,,,,,,,,,,
dc:lxxxxxkO0000K0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkxodOkOkoodxkkkkkxdxkkkddxkkOxoxOOOkdoddxkkkkddxkOkxddddxkkkdodxxxdlcccloddl:coddoc:::ldddddc:lo;,,;oc;;looolccccccccc;;,,,
OO00KXXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXKXXKKK0OxdkkxOOOkxodkxdookOoxOkddlldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxkOkxkOklcdOxc:xkOOOkxddddxxxddlc:
XXXXXXNXXNXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:cdxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,dc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOolOKKKKKKKOkO0KKKKOxo
XXXXXXNXXNXXXXXXKKKKK0000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOkxolxdcoolddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:coc;,;lkoccccokxxOkxkOolOKKKKKKKKKKKKKKK000
XXXXXXXXXXXKK000OOOOOOOOOOOOkOOOOOOOOOOkkOOOOOOOOOOOOOOOOkocllc::cllc;;,,,ccc::,,;::;,,,';ccc:,',;;,',;::;,..',,......';,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;::;:xO00000KKKKKKKKKKKK
0000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOo:;;;;;;;,,,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkOkkkkkkkkkkkOOOOOOOO0000000000dlccccc:::::;;,'.....'',,,''''''''''''.''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdo:;'..';:ccccccc:::::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO0000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxdddddddxxxddl:;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc;;,',,;::cccc::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddddddddddolc:;,'',,;::;::::;;;;;;;;;;,;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOO0OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolooooooodddool::;,'.',;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolllllllooddddddddoocc:;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxddooooddddddddddddddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddolllllllloooooooll:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxdddddddddooollccclllllllllllllllc;,'',cllcc::;,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOO0OOOOO0000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooooollllccccclllll:''lOK0OO0Okl;;,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOOOOOOOO000KKKKXXXXKXXXXKKKKKKKKKKKKKKKKKK000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkkxxxxdddddddxxxxddoooollllllcc;..,o0KKKXXXKx;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,'''''''
OOOOOOOO0000KKKXXXXXXXXXXNNNXXXXXKKKKKKKKKXXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxxdddddddddooooooollllllc;'..':xKXXXXXXKo;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
O000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOkOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllllllool,'...'oKXXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,'''''''''''''''''''
KXXXXNNNNNNNNNNNNXXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxxdddooooooooodxkx;.....:kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
NXNNNNNNNNNNNNNNNNXXXXXXXKKKKKKKK000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxd:......'l0XXXXXXKkdddxxdddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXKKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........:OKKKXXXXXkoxOollodxxxdolc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO00OOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........'dO0KKKXXXXxcdOxdddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc,..........;ldOKKKKXKoclo0Oxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,'''.'''..,lloxkO0000lccoKKOkxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddoodddddddddddddddddddddddddddddxxoc::;,;;;,,.....lK0kddxOOdlcccdXNXKOxxxxxxxxxxxxxxxxxxxxxxddol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;,,,,,,,,'...cOkdodxkOdcccldXNNXKkxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkxxdoooooooooooooooooooooooooooooc;,,,'''''',:lo:'.cOkxxxdxkxccllxXNNNNKkxxdddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddooooolllllooooooooooooooool:;,'''''''';cdkdc;dOxoolldkOdcld0XNNNNX0xxdddddddddddooooooooddddddddddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxxddolllllllllllllllllllll:;,,,,,,''''':lc::lolcclldkOOc:dKXXNNNXKkdooooooooooooooolllllloooooooooooooddddlc:;,,''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddllllllllllllllllll:;;;;;;;,,,,''''''..,dxxddxOk,.,xKKXXXXX0doolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoollllllllllllllolc:;;;;;;:;cl:,:c:,,ckkkdxkOd'..:xKXXXXXX0dlllllllllllllllllccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdoolllllllloodxkkOOkoc:::dxoxkd:;lkkdclxxd:'...'dKXXXXXXOdllllllllllllcccccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdooooooooodkO0KKKkl::doldxo;:xkkl;cc:;,.....'dKKXXXXX0dolllllllccccccccccccccccccccccccc::::::c::c
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO0000000000000O000000000Okdooooodddx0KXXXOl:ll:::;,;lol:;,,,'.......'o0O0XXXXKOdolccccccccccccccccc:::::::ccccc::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO00000000000000000000Okxdokkkk0KXXXKx:;,,''.....';,'''.........'c;dXXXXXX0xlcccccccccccccccc::::::::cccccccc:::::::
xxxxkkkkOOOOOOOOOOOOOOOOO000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKKK00000000OxoxxkkO0XXXXOc''........','.'.............oKkkKNXXOlccccccccccccccccc:::::::ccccc::::::::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKKKK0KKKK000kooooodxk0KKx,........''''.......'oc......,:;;dOOkocccccccccccccccc:::::c:::cc::::c::::::::
kkkkOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000KKKKKKKKKK0kooooooooooo:........'''''.......lKx,.'.......:xdlccccccccccccccccc:::::::::ccccccc::::::::
kkkkkOOOOOOOOOOOOO000000000000KKKK00000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000KKKKKKKKK0Odloodddoooll,.........''.........lkx;;:'......:dolcccccc::::::cc:::::::::::::::::::::::::::
kkkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO000000000KK0Oolllodxxolc;.....................,;:;::;;,...;lolccccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO00000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000Oxo:cldOOko;......................',;;;;;;;;;;:cccccccccc:::::::::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOkOkkOOOOkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxl;;;lkOOx;......................',,;:::;;::::cccccccccccc:::::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkd:;;;;:c::'....................'''',;::::::::ccccccccc::cc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxl;,,,,,,''.....................'''',;:::::::cccccccccc:::::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOkxdoc:;,''''''......................''',;:::::cccccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOxoolc:;;,'''''......................''',:loolccccccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO000000000OOOOkxocccc::::,.'do,'',,,'''...........',;;:cldddoc::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkxoolcccccccc;..,;,,,,;;;,,,,,'''''',;;:::clodxxkxl::::::::::::::::::::::::::::::::::::::::::::;;;;
KKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxdoooooooolcccccccc,..''',;;;;;;;;;;;;;;,,,,;:::ccdxkO00dc:::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddooccccc:;,',,;cccccccc::;'''''',;;;:::::::::::,,,,;;::ccokkOOOxlccc::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKXXKKXXXKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::::,.......',::::;;,''''''';;:::::::::::::;,,,;;:::::looddddlc::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc::::::::;.........,;;;;;,'''''''';::::::::::::::;;,,;;;;;;;::clloolc:::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc:::::::'.........,;;;;;,,'''''',;;:::::::::;;;;;;;;;;;;;;'...'''.',::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollcc:::::::::::::ccccc:::::::;'........';;;;;;,,,,,;;;;;:;::;;;;;;;;;;;;;;;;;;;;'........,::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::,........';;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;........';::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
ooooooooddddddddddddxxxxxkkkkkOO000KKKKKKKKKKK00Okdddollllllllllcccc::::::::::::::::::::::::::::::;'........;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........';::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::ccccclloodxxxxxdooolllllllllllllllccccc::::::::::::::::::::::::::::::::;'.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,.........;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccllllllllllcccccccclllccccccc:::::::::::::::::cccc:::::::::::::,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,'.........,;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccccllllllllccccccccccccccccccccc:::::::::::::::::::::::::::::::::;.........'',;;;;;;;;;,,,,,,,,,,,,,;;;,,,,.........,;;::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccc::::cccc::::::::::::::::::::::::::;;;:::::;...........',;;;;,,,,,,,,,,,,,,,,;;,,,'.........,;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::cccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::::::::::::::::::::;;;;;;;;;;'..........',,,,,,,,,,,,,,,,,,,,,;,,,'........';;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
:::::::::ccccccccccccccccccccccccccccccccccccccccllllllllcccc:::::::::::::::::::::::::::::::;;;;;;;,;;,,'..........',,,,,,,,,,,,;,,,,,,,,,,''.........,;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::ccccccccccccccccccccccccccccccccccccccccccclllllllcccc:::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,'...........',,,,,,,,,,,,,,,,,,,'............';;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllcccc:::::::::::::::::;;;;;;;,,,,;;;;,;;;,,,,,'............''',,,,,'',,,,,,,,,,,............,,;;;;;;;;::::;:::::;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc:ccllllccc:::::::::::c:::::::;;;;;;,,,,,,,,,,,,,,,,,'...........''',,,,,,,,'''',,,,,,,'............,;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::cc:::::::cc:cccccccccccccccccccccccccccccclllllccccc:::::::ccccc:::::;;;;;;;,,,,,,,,,,,,,,,''...........',,,,,;;;,,,,,,,,,,,,,'............,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccccccccccccccccloollccc::c::::::cccccc::::;;;;;;,,,,,,,,,,,,;;,,''......'''',,,,,,;;;;;;,,,;;;;,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccccccccccccccllooolccc:::c::::::::::c:::::;;;;;;;,,,,,,;;,;;:;;;,,,,,,,,,,,,;,,,,,,,;;,,,,,,;;;,,,''.............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccllllooolcccc:ccc::::::::::::::::::;::::::::::::::::::;;;;;;;;;;;;;;;;,;;;;;,;;,,;;;;;;,,,,''.............',;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccclllllllclllloooolcccccccccccccccccccccccc::;,;;::ccc:::cccc:::;;:;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;,,,,,'............,;;;;;;,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
::::::::::::::cccc:ccccccccccccccclllllllllllloooolcccccccccclllllllccc:ccc::;,,;;::::::::::::;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;,,'''.......,;;;;;;;,,,,;;;;;;;;;,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccllllllllllllloddooooollllllllllllccc::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::ccccccccccllllllllllllllllllloollllllllcccc:::c:::::::::::::::::;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;::;;;;;;;;;;;;;;;;;,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccclloollllllllllllllllllllccc::::::::::::::::::::::::::::;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
:::::::::::::::::::::::ccllllllllllllllllcccccccccc::::;;;;;::::::::::::::::::::::;;;;::::::;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::ccccccccccccclllcllcc:::::::::;;;;;;:::::::::::::::::::::::::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::::::::::::ccclllccccc::::::;;;;;;;;:::::::::::::::::::::::::::c::::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,'''''''''''''''',,''''''''
::::::;;;;::::;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,;;,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::::;;;;:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::ccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;:::::::;;;;;::::::;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclllccccclcc:::::::;;;;;;;;::;;;;;;;;;;:::;;;;;;;;;;::cc::;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllccccccc::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;::::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;,;;;;;;;;,,,;;;;;,,,,;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::;;:;;;;;;;;;;;;,,,,;;;,;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''...
:::;:::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,'''''',,,,,,,''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''',,',,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,;,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;,,;;;;;;;;,,;,,,,,,,,,,,,,;,,,,,;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''','''''''''''''''''''''''''''''''''''''''''''''''''.....
;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''',,'''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,'''''''''''''''''''''''''''''''''..'''..............
;;;;;;,,,;;,,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,;;;;;;;;;,,;;;,,',,,,,,,;;;;;;;;,,,,;;;,,,,,,,,;;,,,,,,,,,,'''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,,;;;,,;;;;;;;:c;,,,,,,,,,,,;;;,,,,,,,;;;;;,,,,,,;;,,,,,,,,,;,,,,,;,,,;;;;,,;;;;,,,,,,,;,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d;;::::llcclloxxxkkxdkOxc0KXXXXXXXXXXXXXx   .KXXXXXXXXXXXOooooooolllllllllooollllooooooodddoddoooooooooooooooodddddddddooooooodddoooooollccc:;::;;;;;;,,,;;;;;;;,,,'''''.''''.......''';;,,;;,,,,,,,,,,,
dc:ldxxxxxxxO00O00kxldocoOkcc:.....,;;;,;   .XXXXXXXOxkXXXOkkkkddxkkkxddxxkkkkxodOkOkdodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkkkkdodxxxdlcccloddl:coddoc:::looddoc:lo;,,;oc;;looolcccc:cccc;;,,,
OO00KXXKKKOKXXXXXXXO:clld00xXk..............;XXXXXK0kOO0KK0OxdkkxOOOkdodkxdookOoxOkdolldxollokddxc:ddccc:ddcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxxkkxkOkocdOx::xkOOkkxddddxxxdolc:
XXXXXXNXXNXXXXXXXXXKOOO000KK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOolOKKKKKKKOkO0KKK0Oxo
XXXXXXNXXNXXXXKKKKKK00000OOOOOOOOOOOOOOkkOOOkkOOOOOOOOkkOOkxlcooclllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:coc;,;lkoccccokxxOkxkOllOKKKKKKKKKKKKKKK000
KXXXXXXXXXXKK0O0OOOOOOOOOOOOkkkOOOOOOOOkkOOOkkOOOOOOOOOOOkoccc:::::c:;;,',ccc::,,;::;,,,';ccc:,.,;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKc;cO::lkOO
00OOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOo:'.. ...',,'....'''''''''''''.'''''.......................................................................................;ccclllooddddl:clll
OOOOOOOOOOOOOOOOOOOOOOOOOkkkOkddxkkkkkkkxxxxxOOO0O00000000d:;;,,,::::;;,,'.....'',,,''''''''''''.'...................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOxdkxxxxxxxxxxxdl:;'..';:ccccccc::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO0000000000OOOOOOkkkkkkkkd'',;:kkkkkkkkkkkkkkkkxxxxxdddddddxxxddoc;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkk;.......    .lokkkkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc;;,',,;::cccc:::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkl             .'lll:oxkx::lockkxxxxxxxxxddddddddddddddddolc:;,'',,;::;::::;;;;;;;;;;,;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOO0OOOOOOOOOOOOOOOkkkkkk;       .....ldkkkkkxxkkkkkxkxxxxxxxxxxddddddddoolooooooodddool::;,'.',;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOkcOkkkkkkk.     .kkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolllllllooddddddddooc::;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOx,,okkkkkkkko:    .odxdoccdkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkx;:cc'loolc;;:ll::lookkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdoooooddddddddooooddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkddddxkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddolllllllloooooolll:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoooollccclllllllllllllllc;,'',cllcc::;,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKKK000000000000OOOkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooooollllccccclllll:''cOK0OO0kkl;;,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOOOOOOOO000KKKKXXXXKXXXXXXKKKKKKKKKKKKKKKK000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkkxxxxdddddddxxxxddoooollllllcc,..'o0KKKXX0kx:,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,'''''''
OOOOOOOO0000KKKXXXXXXXXXXNNXXXXXXKKKKKKKKKXXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxxdddddddddooooooollllllc;'...,xKXXXXK0Ko;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
O000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOkOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllllllllllool,'....l0XXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,'''''''''''''''''''
KXXXKkdooxNNNNX00KXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxddddooooooooodxkx;.....;kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
llolc     ''''' .kXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxd:......'l0XXXXXXKkdddxxdddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
cc;,;....'cccclodOKKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl'........:kKKKXXXXXkoxOollodxxxdolc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO00OOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........'dO0KKKXXXXxcdOxdddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdl:,..........;ldOKKKKXKoclo0Oxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,'...'''..,lloxkO0000lccoKK0kxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddoodddddddddddddddddddddddddddddxxoc::;,;;;,,.....lK0kddxOOdlcccdXNNKOxxxxxxxxxxxxxxxxxxxxxxddol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooooddddddddddl:;;;,,,,,,,,'...cOkdodxkOdcccldXNNXKOxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooooo:;,,,'''''',;lo:'.cOkxxxxxkxccllxXNNNNKkxxdddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddooooolllllooooooooooooooool,,,'''''''',cdxoc;dOxollldkOdcld0XNNNNX0xddddddddddddooooooooddddddddddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkxddolllllllllllllllllllll,,,,,,,,''''':lc::lolcclldkOOc:dKXXNNNXKkdooooooooooooooolllllllllooooooooooddddlc:;,,''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllll:;;;;;;;,,,,'''''...,dxxxdxOk,.,xKKXXXXXKdoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoollllllllllllllolc:;;;;;;;;cc;,:c:,,ckkkdxkOd'..:xKXXXXNX0dlllllllllllllllllccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkxxOOOOOOOOOOOkxdoolllllllloodxkkOOkdc:::dxoxkd:;lkkdclxxd:'...'oKXXXXXXOdllllllllllllcccccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOkcdl,:k000O000000000OkxdooooooooodkO0KKKkl::doldxo;:xkkl;cc:;,.....'dKKXXXXX0dolllllllccccccccccccccccccccccccc::::::c::c
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO0000000000000k:dddcc000Okdooooodddx0KXXXOl:ll:::;,;col:;,,,'.......'o0O0XXXXKOdolccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO0000000d ......;k000Okxdokkkk0KXXXKx:;,,''.....';,'''.........'c;dXXXXXX0xlcccccccccccccccc::::::::cccccccc:::::::
xxxxkkkkOOOOOOOOOOOOOOOOO000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO000000d        ,d0000OxoxxkkO0XXXXOc''........','.'.............oKkxKNXXOlccccccccccccccccc:::::::ccccc::::::::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOkOOl.            x000kooooodxk0KKx,........''''.......'oc......,:;,dOOkdcccccccccccccccc:::::c'  ,c::::c::::::::
kkkkOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOo;x0xc           xKK0kooooooooooo:........'''''.......cKx,.'.......:xxlcccccc:::::cccccc::::.'.  ,cccccc::::::::
kkkkkOOOOOOOOOOOOO000000000000KKKK00000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOO; .';.;:::::::::OK0Odloodddoooll,.........''.........ckx;;:'......:dolcccc::::::::cc::::::::,',,:::::::::::::::
kkkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOk:::::dO00Ok0000KK0Oolllodxxolc;.....................,;::::;;,...,lolccccc::::::::c::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdkOkdO00Oxl:cldOOko;......................',;;:;;;;;;,:cccccccccc:::::::::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxl;;;lkOOx;......................',,;:;;::::::cccccccccccc:::::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkd:;;;;:c::'....................'''',;::::::::ccccccccc::cc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000kOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxl;,,,,,,''.....................'''',;:::::::cccccccccc:::::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOkxdoc;;,''''''......................''',;:::::cccccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOxoll::;,,'''''......................''',:loolccccccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO000000000OOOOkxocccc::::,.'do,'',,,'''''.........',;;:clddddc::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkxoolcccc:ccc;..,;,,,,;;;,,,,,''''',,;;:::ccoxxxkxl::::::::::::::::::::::::::::::::::::::::::::;;;;
KKKKKKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxdoooooooolcccccccc,..''',;;;;;;;;;;;;;;,,,,;::::cdxkO00dc:::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddooccccc:;,'',;cccccccc::;'''''',;;::::::::::::,,,,;;::::lxkO00xlccc::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKXXKKXXXKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::::,........,::::;;,''''''';::::::::::::::;,,,;;:::::cooddddlcc:::::::::::::::::::::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc::::::::;.........,;;;;;,'''''''';::::::::::::::;;,,;;;;;;;;:clloolc:::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc:::::::'.........,;:;;;,,'''''',;;;::::::::;;;:;;;;;;;;;;'....'..',::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollcc:::::::::::::ccccc:::::::;'........';;;;;;,,,,,;;;;;;;::::::;;;;;;;;;;;;;;;;'........,::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::,........';;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;........';::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
ooooooooddddddddddddxxxxxkkkkkO0000KKKKKKKKKKK00Okdddollllllllllcccc::::::::::::::::::::::::::::::;'........;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........';::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::ccccclloodxkkkxdooolllllllllllllllcccc:::::::::::::::::::::::::::::::::;'.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccllllllllllcccccccclllccccccc:c:::::::::::::::cccc::::::::::::;,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,'.........,;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::;.........'',;;;;;;;;;,,,,,,,,,,,,,;;;;,,,.........,;;::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccc:::::cccc::::::::::::::::::::::::::;;;:::::;...........',;;;;,,,,,,,,,,,,,,,,;;;;,'.........,;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::ccccccccccccccccccccccccccccccccllllllccccc:::::::::::::::::::::::::::::::::;;;;;;;;;;;'..........',,,,,,,,,,,,,,,,,,,,,;,,,'........';;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
:::::::::ccccccccccccccccccccccccccccccccccccccccllllllllccc::::::::::::::::::::::::::::::;;;;;;;;;,;;,,'..........',,,,,,,,,,,,;,,,,,,,,,,''.........,;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::ccccccccccccccccccccccccccccccccccccccccccclllllllcccc:::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,'...........',,,,,,,,,,,,,,,,,,,'............',;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllcccc:c:::::::::::::::;;;;;;;,,,,;;;,,,,,,;,,''............''',,,,,'',,,,,,,,,,,............,,;;;;;;;;;;;;;:;;;;;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccc::ccccccccccccccccccccccccccccccccc::cllllccc:::::::::::c:::::::;;;;;;,,,,,,,,,,,,,,,,,'...........''',,,,,,,,'''',,,,,,,'............,;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::cc:::::::::ccccccccccccccccccccccccccccccclllllccc:::::::::ccccc:::::;;;;;;,,''',,,,,,,,,,,''...........',,,,,;;;,,,,,,,,,,,,,'............,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccccccccccccccclloolcccc:::::::::cccccc::::;;;;;;,,',,,,,,,,,;;,,''.......''',,,,,,;;;;;;,,,,;;;,,,'.............,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloollccc:::c::::::::::::::::;;;;;;;,,,,,,;;,;;:;;;,,,,,,,,,,,,;,,,,,,,;;,,,,,,;;;,,,''.............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccllllooolccc::ccc::::::::::::::::::;::::;;::;:::::::::;;;;;;;;;;;;;;;;,;;;;;,;;,,;;;;;;,,,'''.............',,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccclllllllcllllooooccccccccccccccccccccc:ccc::;,;;::ccc:::cccc:::;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;,,,,,'............,;;;;;;,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
::::::::::::::cccc:ccccccccccccccclllllllclllloooolcccccccccclllllllcc:::cc::;,,,;::::::::::::;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;,;;,,'''.......,;;;;;;;,,,,;;;;;;;;;,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllllllllodoooooollllllllllllccc:::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccccccclllllllllllllllllllllllllllllccc::::::::::::::::::::::;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;:::;;;;;;;;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccclloollllllllllllllllllllccc::::::::::::::;:::::::::::::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
:::::::::::::::::::::::ccllllllllllllllllcccccccccc::::;;;;;::::::::::::::::::::::;;;;::::::;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::ccccccccccccclllcllcc:::::::::;;;;;;:::::::::::::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::::::::::::ccclllccccc::::::;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,'''''''''''''''',,''''''''
::::::;;;;::::;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,;;,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;:::::::::;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::ccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;::::::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclllccccclcc:::::::;;;;;;;;::;;;;;;;;;;:::;;;;;;;;;;::cc::;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllccccccc::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;:;;;;;;;;;;;;;;;;;,;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cclcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,;;;;;;;,,,;;;;;,,,,;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::;;:;;;;;;;;;;;;,,,,;;;,;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''...
:::;:::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,'''''',,,,,,,''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''',,',,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,;,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;,,;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''','''''''''''''''''''''''''''''''''''''''''''''''''.....
;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''',,'''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,'''''''''''''''''''''''''''''''''..'''..............
;;;;;;,,,;;,,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,;;;;;;;;;,,;;;,,',,,,,,,;;;;;;;;,,,,;;;,,,,,,,,;;,,,,,,,,,,'''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,,;;;,,;;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,;,,,;;;;,,;;;;,,,,,,,;,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d;;::::llcclloxxxkkxdkO0x0KXXXXXXXXXXXXXKKXXKKXXXXXXXXXXXOooooooolllllllllooollllooooooodddoddoooooooooooooooodddddddddooooooddddoooooollccc:;::;;;;;;,,,,;;;;;;,,,'''''.'''........''';;,,;;,,,,,,,,,,,
dc:ldxxxxxOO000K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkxodOkOkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkkkkdodxxxdlcccloddl:coddoc:::looddoc:lo;,,;oc;;looolcccc:cccc:;,,,
OO00KXXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKXKKKK0OxdkkxOOOkdodkxdookOoxOkdolldxollokddxc:ddccc:ddcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxxkkxkOkocdOx::xkOOkkxddddxxxdoocc
XXXXXXNXXNXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOolOKKKKKKKOkO0KKK0Oxo
XXXXXXNXXNXXXXKKKKKK00000OOOOOOOOOOOOOOkkOOOkkOOOOOOOOkkOOkxlldocollddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:coc,,;lkoccccokxxOkxkOllOKKKKKKKKKKKKKKK000
KXXXXXXXXXXKK0O0OOOOOOOOOOOOkkkOOOOOOOOkkOOOkkOOOOOOOOOOOOocllc::::c:;;,''ccc::,,;::;,,,';ccc:,',;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKKKKKKKKKKK
00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOO0o:'.. ...',,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkOkkkkkkkkkkkOOOOOOOO0O00000000dc:;,,,::::;;,,'.....'',,,''''''''''''.'...................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkxxxxxxxxxxdl:;'..';:ccccccc::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO00000O0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxdddddddxxxddoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc;;,',,;::cccc:::;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddooolloooooodddool::;,'.',;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolllllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkkOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdoooooddddddddooooddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxdddddddddllllllllloooooolll:;;,'.'',,;;;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoooollccclllllllllllllllc;,'',::;;;;;,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOO0OOOO00000000KKKKKKK000000000000OOOkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooloollllccccllllll:,;dOOkkxxdl;;;,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOOOOOOOO000KKKKKXXXKKXXKKXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxdddddddddxxxdoooollllllcc;..cOK00KXXKkc;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,'''''''
OOOOOOOO0000KKKXXXXXXXXXXNNNXXXXXKKKKKKKKKXXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxxdddddddddooooooollllll:,'.';oOKXXXXXKk:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,''''''''
O000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOkOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllllllllllll;'..'':kKXXXXXXKo:::;;,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,'''''''''''''''''''''
KXXXXNXNNNNNNNNNNXXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddoooooooooodxxc'....'dKXXXXXXKddddollc:,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
xkNNNNXNNNNNNNNNNNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkd;......:OKXXXXXKkddddxddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
0kNNNNNNNNNNNNXXXXKKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl'.......'dKKKXXXXX0xdxkollodxxxddlc:;,,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........'x00KKXXXXXklxOdlodxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;,,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdl:,.........;xO0KKKXXXXdcdkOxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;'....'.....;cdO00KKXKlcco0Oxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddddddddddddddddddddddddddddxdoc::;,,,,,'....'okxxxxk0OkOlccoKXKOxxxxxxxxxxxxxxxxxxxxxxxddol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooooddddddddddl:;;;;,,,,,,'...'x0koldkOklccccdXNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooooo:;,,,''',,,,;;,'..oOxddxxkOoc:clxXNNXXOxxxxddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooool;,,'''''''':lxdc,'dOkddodxkxlcloxXNNNNXkxxdddddddddoooooooooodddoooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkxddoolllllllllllllllllloc;,,,,,,,''',:ddocldxlcclldkOxcld0XXNNNX0xdooooooooooooooolllllllllooooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollllllllllllllll:;;;;;;;;,'''';:;,;;::lldodkOO:;l0XXNNNXXkooolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoollllllllllllolc:;;;;;;;;,,,,'''''..:xkkxdkOx'.,dKKXXXXXKkollllllllllllllllllllcccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdoollloollodkkkOkdoc:::::ooclol:;:dkxodkkxl'..,d0XXXXXX0dlllllllllllllcccccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdoooloodxOOKKKKOo:::lxookkl;:xkxc:oxoc,'....oKXXXXXX0dlllllcllllcccccccccccccccccccccccc::::::c::c
ddddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOOO000000000000O000000000OkxdoodddOKKXXXOoc:odccoo:,lkkd;:c:;,'.....'o0KKXXXX0xolllccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO00000000000000000000koxxxxOKXXXXKko:::;;;,,,;cc:;,,,'........'lOk0XXXXXOdolccccccccccccccccc::::::::::::cccc::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKKK000000OdxkkkO0KXXXX0o;,,''.......,,'''..........'c;xXXXXXXOolccccccccccccccccc:::::::::::::cccc:::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKKKK00KK0xoodooddk0XXXKo'...........'''......';'......:occk0Okocccccccccccccccc:::::cccccc::::c::::::::
kkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000KKKKKKK0xoooooooddk000:..........'''........lk:..........:xxlcccccccccc:cccccc:::::ccccccccccc::::::::
kkkkkOOOOOOOOOOOOO000000000000KKKK00000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000KKKKKKKOooodkkkxdooool,..........'''.......'dOo,,'.......;ddlcccc::::::::cc:::::::::::::::::::::::::::
kkkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO00000000KkolodO000Odoll;......................,;:;:;'......:doccccc:::::::ccc:::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0OdolokO000dl:,.......................,,;;;;;;,..';llccccccc::::::cc::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxoloOO0Od,.......................''',,;::;:;;;;:cccccccccccc:::::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkd::oxxx:'.......................''',,;::::::::ccccccccc::ccc::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOko:,,,;;'''''....................'''',;::::::::ccccccccc:::::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOo;,,,,''''''....................'''',;:::::::::ccccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOkl;,'''''''''.....................''';ccccc:::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0000000OOO000OOkxol,',oc'''''.....................'';cldoc:::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkxxxxxdol,.'c:''''.....................';:coxkxc::::::::::::::::::::::::::::::::::::::::::::::::;;;;
KKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxdoollllooool;,''''''''',,,,'',,,,,'......',;cloxO0Olcc::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddolcccccccccccclllc:,'''''''',;;;;;;;:::::;;,,,,,,,;dxkO00Olcc::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKXXXXXXXXKKXXXKKKKKKKKKKKXKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::::::::::,'.''''''''''',;::::::::::::::::;;;;;;oxkkkkkxlc::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::c:::::::::;'........'''',;;;:::::::::::::::::;;;;;:cllodddoc::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc::c::::::::;......''''''',;;;;::::::::::::::;;;;;;;;;;:ccccclc:::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollcc:::::::::::::ccccc:::::::::::;.....''''',,;;;;;;;;:::::;;;;;;;;;;;;;;;'.......,;::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
XKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::::;.......',,;;;::;:;:;;;;;;;;;;;;;;;;;;;;;'.......,;;;;;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkxxxxxxxxxxxxxxxxxxxxkkkkkOO00KKKKKKKKKKKK00Okxddollllllllllcccc::::::::::::::::::::::::::::::::'........';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......';;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::cccccloddxkkkkxdooolllllllllllllllcccc::::::::::::::::::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......';;;;;;;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::cccccllllllllllllcccccccclllccccccc:::::::::::::::::cc::::::::::::::::,.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,.......';;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccclccccccccccccccccccccccccc::::::::::::::::::::::::::::::::::::::;......';;;;;;;;;;;;;,,,,,,,,,,,,,,,,.......';;;;;;;;::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;;;..........',;;;;,,,,,,,,,,,,,,,,;;,.......,;;;;;;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::::ccccccccccccccccccccccccccccccccllllccccc::::::::::::::::::::::::::::::::::;;;;;;;;;;;;,...........,,,,,,,,,,,,,,,,,,,,;,,.......,;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
:::::::::cccccccccccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::::::::::::::::;;;;;;;;,,;;;,,,............,,,,,,,,,,;,,,,,,,,,,,'......,;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,'''...........',,,,,,,,,,,,,,,,,,,'........',;;;;;;;;;;;;::::::;;;;;;;;;;;;;,,;;,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllccc:::::::::::::::::::;;;;;;;,,,,,;,,,,;,,;,,''...............',,,,,',,,,,,,,,,,,'..........,;;;;;;;;;;;;;;::;;;;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccc::ccccccccccccccccccccccccccccccccc::clllcccc:::::::::::::::::::;;;;;;,,',,,,,,,,,,,,,,'..............'',,,,,,'''',,,,,,,''...........,,;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccccccccccccccccllllcccc:::::::::cccc::::::;;;,;;,,''',,,,,,,,,,,''............'',,,,,,,,,,,,,,,,,,''............',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclollccc::::::::::cccc::::::;;;,;;,,'',,,,,,,,;;,,''.......''',,,,,,,;;;;;,,,,;;;,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolcccc:::c::::::::::::::::;;;;;;,,,,,,,;;,;;::;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;;,,,''.............',,,,;,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccccccccccclcllooolcccc:ccc:::::::::::::::::;;::::;;::;;:::::::;;;;;;;;;;;;;;;;;,,;;;;,;;,,;;;;;;,,,'''.............',,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllclllloooolccccccccccccccccccc::ccc::,,;;::ccc:::ccc:::;;;;;;;;;;;;;;;,,,,,;;;;;;;;;;;;;;;,,,,,,'............,;;;;;;,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
::::::::::::::cccc::ccccccccccccccllllllccllllooooccccccccccclllllllcc::::c::;,,,;:::::::::::;;;;;;;;,;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;,;;,,'''.......,;;;;;;;,,,,,;;;;;;;;,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllclllllodooooolllllllllllllccc:::::::::::::::;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccccccclllllllllllllllllllllllllllllccc::::::::::::::::::::::;;;;:::::::;;;;;:;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;::;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccclloollllllllllllllllllllccc::::::::::::::;;:::::::::::;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
:::::::::::::::::::::::cclllllllcllllllllcccccccccc::::;;;;;;:::::::::::::::::::::;;;;::::::;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::ccccccc:ccccclllcllcc::::::::;;;;;;;:::::::::::::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::::::::::::ccclllccccc::::::;;;;;;;;:::::::::::::::::;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;,,,,,,,,,,,,,,,,,,,''''''''''''''''',''''''''
::::::;;;;::::;;;;;;;;;::::::::::ccccccccc:c::;;;;;;;;;;;;;;::::::::::::::::;;:::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;,;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;:::::::::;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccclcc::::;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;::::::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc::::;;;;;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::cllllllcccccc::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;,;;;;;;,,,;;;;;;;,,,;;;;;,,,;;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::;;:;;;;;;;;;;;;,,,,;;;,;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''...
:::;:::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''',''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''',''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;,;;;;;:;;;;;,,;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''','''''''''''''''''''''''''''''''''''''''''''''''''.....
;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''',,'''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,''''''''''''''''''''''''''''''''''''''..............
;;;;;;,,,;;,,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,;;;;;;;;,,;;;,,',,,,,,,,;;;;;;;,,,,;;;,,,,,,,,;;,,,,,,,,,,'''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,,;;;,,,;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d;;::::llcclloxxxkkxdkO0x0KXXXXXXXXXXXXXKKXXKKXXXXXXXXXXXOooooooolllllllllooollllooooooodddoddoooooooooooooooodddddddddooooooodddoooooollccc:;::;;;;;;,,,,;;;;;;,,,'''''.'''........''';;,,;;,,,,,,,,,,,
dc:ldxxxxxOO000K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkxodOkOkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkOkkdodxxxdlcccloddl:codddc:::looddoc:lo;,,;oc;;looolcccc:cccc:;,,,
OO00KXXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKXKKKK0OxdkkxOOOkxodkxdookOoxOkdolldxollokddxc:ddccc:ddcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxxkkxkOkocdOx::xkOOkkxddddxxxddocc
XXXXXXNXXNXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOolOKKKKKKKOkO0KKKKOxo
XXXXXXNXXXXXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOkkOOOOOOOOkkOOxxllddclolddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:co;:d:cdc;,;lkoccccokxxOkxkOllOKKKKKKKKKKKKKKK00O
KXXXXXXXXXKKK00OOOOOOOOOOOOOkOOOOOOOOOOkkOOOkkOOOOOOOOOOOkocllc:::cc:;;,''cc:::,,;::;,,,';ccc:,',;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKKKKKKKKKKK
00OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOO0o:'.. ...',,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOkkOkkkOkkkkkkkkkkkkkOOOOOO0O00000000dc:;,,,::::;;,,'.....'',,,''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdl:;'..';:ccccccc::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO00000O0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxdddddddxxxddoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc;;,',,,;::ccc:::;;;;;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoooloooooooddddol::;,'.',;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddoolllllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkkOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdoooooddddddddooooddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxdddddddddllllllllloooooooll:;;,'.'',,;,,;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OkkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoooollccclllllllllllllll:;''.'',;;,,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKKK000000000000OOkkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooloollllccccclllllc;:ooolcc:;;,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOOOOOOOO000KKKKXXXXKKXXKXXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxdddddddxdxxddoooolllllccc,':kK00000Oxc;;,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOO0000KKKXXXXXXXXXXNNNXXXXXKKKKKKKKKXXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxdddddddddooooooolllllcc;..,d0KKKXXXK0x:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,''''''''
O000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOkOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooollllllllllllllc,'..':xKXXXXXXXKo:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,''''''''''''''''''''''
KXXXXNXNNNNNNNNNNXXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddoooooooooodxo,...',oKXXXXXXXKxdddollc:,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNXNNNNNNNNNNNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkkd,.....:kKXXXXXX0xdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXKKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxc'.....'l0XXXXXXXKOxdooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdl;........,kKKKXXXXXX0xddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;,,,,,,,'''''''''''''
XXXXXKKKK000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc,.........lO0KKKKXXXXX0kxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;'........'cdk0KKKKKXXXK0kxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddddddddddddddddddddddddddddxxol::;,,,'''....,::okkkO0OO0KKKKK0Okxxxxxxxxxxxxxxxxxxxxxxxddol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooooddddddddddl:;;;;,,,,,'...'d0kxoldk0x::xKXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooooo:;,,,,,,,,,,,'...:kdoddxk0x:;dKKXXNNX0kxdddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooool;,,''''''',:coc,.;xkxddddkd::cd0XXNNNXOxdddoooooooooooooooooodddoooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOkkxddoolllllllllllllllllllc;;,,'''''',:lxdl:lxxlcccclcccco0XXNNNNKxooooooooooooooooolllllllllllooooooooddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllc:;;;,,;,,'''',cc;;clc:ccollcccco0XXXXXNXOoolllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllllc;;;;;;;;;,,,''''.....:xxkdocccco0XXXXNNX0dllllllllllllllllllcccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdoollloooodxkkxol::::;;;:c;;:c:,,;dkkdxko,;cxKXXXXNNN0doolllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdooooodxOKKKKkoc::::ldcdkd;;:xkoclxx:'.,d0KKXXNNNXOdolllllllcccllccccccccccccccccccccccc::::::::::
ddddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOOOO00000000000O000000000OkdooddOKXXXX0o::::oo:odl;;dOkc:cc;,'..:k0KKXXXXXKxollllllccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO0000000000000000000kdxkk0KXXXXXkc:c:lc;;;;,,lol:;,,,'....;x00KXXXXX0xolllllccccccccccccccccc:::::::::::::c::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKKKK000OkOO0XXXXXXXXOl::;,,'''...'',,,'''......;d00KKXXXXOollcccccccccccccccccccc:::::::::::::ccc::::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKK00000xkO0KXXXXXXXX0o,''...........''..........'cld0KKK0Oxllcccccccccccccccccc::ccc::::cc:::cc::::::::
kkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000KKKK00K0OodkO0KXXXXXXX0:'...........'''...............;ccxkkxlccccc:::cc:::::::::::ccc::::ccccccc::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000000xooddxxkO0KXXKd'............''...................dxdolccccc::::::::::::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO0000000dllooooolookkx:..................................lollccccccc:::::::::::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxollllcccccc:'..................................cllcccccccc:::::::::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOklcoxkdl::::;...........................'''....,cccccccccccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOl:d000kl:;;,.........................''',;;,,;;ccccccccccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOl::odkkdc;;'.....................''..'',;;:::::cc:cccccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOc;;;;dkxd:,'.....................''..'',;;:::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOx;cxxoxkxd:,'.........................',;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0000000O0OOOOOl,,coooooll:,........................',;:::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKK0xxxxkKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkkxc'',;:cccllc,'...'..............'',,;;:::::::::::::::::::::::::::::::::::::::::::::::::;;::;;;;;
KKKKO;;;;lKKKK0ddddxKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddollllc,'',,,:::cll:,,'''..........',,:cooc::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKx    .KKKKO:x0KKKKKKKKKKKKKKKKKKKKKKKk:ckKKKKKKKKK000000000000000000OOOOOOOOOOOOOxxddolccccccccccc:,''''',;::cllc;;;;,,''....'cloodxkxdl::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKk.....ddOKk.:OKKOOOOOKK0OOKKKKKKKKKKKl:.,KKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc::::::::::::;,,,,''',;::lllc:::::;;,'''',dkOOkkkdl:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKx    .KK: .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::c::::::::::;;;;;;;;;:::llllcccc:::;,,,,;lxxxxxdoc:::::::::::::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKOOOOOKK: .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc:::::::::::::::::::::::::llllcccccc::;;,,;cccldddo:::::::::::::;:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKkodKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollcc::::::::::::::cccc:::::::::::::::::::::::::cc:;;;;;;::::;,',;;;;:col::::::::;;;;;;;:::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
XKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::::::::::::::::::;,......';:::;'.......',;:::;;;;;;;;;;;;;::;::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkxxxxxxxxxxxxxxxxxxxxkkkkkOO000KKKKKKKKKKK00Okxddollllllllllcccc::::::::::::::::::::::::::::::::::::::::::::;'.......;::::;'........,;::;;;;;;;;;;;;;::;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::ccclloddxkkkxdooolllllllllllllllcccc::::::::::::::::::::::::::::::::::::::;:;:::;'.......';;;;;;'.......';::;;;;;;;;;;;;;;;;;;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::c:cccccclllllllllccccccccclllcccccc::::::::::::::::::cc::::::::::::::::::;;;;;;,........,;;;;;;'.......';;;;;;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::::::;;;;;,........,;;;;;;;,........';;;;;,,,;;;;;;;;;;;;;::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::::cccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;,......,,;;,,,,,;;,........',,;,,,,,,,;;;;;;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::::cccccccccccccccccccccccccccccccllllccccc::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;,,'......',,;,,,,,,,,,,'........,,,,,,,,,,;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
:::::::::cccccccccccccccccccccccccccccccccccccccclllllllccc:::::::::::::::::::;;;;;;;:::::;;;;;;;;,,;;;;,,,'..........,,,,,,,,,,,,,,'......',,,,,,,,,,;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,,''.............',,,,,,,,,,,,,,,'......',,,,;;;;;;;;;;;;;;:::::;;;;;;;;;;;;;,,;;,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllcccc::::::::::::::::::;;;;;;,,,,,,,,,,,,,,;,,''................'',,,',,,,,,,,,,,,'........',,;;;;;;;;;;;;;;:;;:;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::ccccc:::ccccccccccccccccccccccccccccccccc:cclllcccc:::::::::::::::::::;;;;;;,,'',,,,,,,,,,,,,'...............'',,,,,'''',,,,,,'''..........',;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccccccccccccccccllllcccc:::::::::ccc:::::::;;,,,;,,''','',,,,,,,,''.............'',,,,,,,,,,,,,,,,,''...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,'',,,,,,,,;;,,''.......'''',,,,,,;;;;;,,,,;;;,,''............'',,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc::::::::::::::::::::;;;;;;;,,',,,,;;,;;::;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;;,,,''.............'',,,,,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllooolccc:::cc:::::::::::::::::;;::::;;:::::::::::;;;;;;;;;;;;;;;;;,,,,;;,;;,,;;;;;;,,,'''.............',,;;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllclllloooolcccccccccc:::ccccc:::ccc::;,;;::ccc::::cc:::;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;,,,,,,,'............,,;;;;;,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
::::::::::::::cccc::ccccccccccccccllllllcclllloooolcccccccccccllllllcc:::::::;,,,;:::::::::::;;;;;;;,,,,;;;;;;,,,,,;;;;;;;;;;;;;;;;;;,,;,,'''.......,,;;;;;,,,,,,;;;;;;;;,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllclllllooooolllllllllllllllcc::::::::::::::;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccccccclllllllllllllllllllllllllllllccc::::::::::::::::;::::;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;::;;;;;;;;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllllllllccc:::::::::::::;;;:::::;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcclllllllccccccccccc:::;;;;;;;:::::::::;;;;;:::::::;;;;::::::;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
:::::::::::::::::::::::::ccccc:::cccclllcllcc::::::::;;;;;;;::::::::::;::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::;::::::::::::::::::::::::::cccllccccc::::::;;;;;;;;:::::::::::::::::;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''',,''''''''
::::::;;;;;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;,,;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;:::::::;;;:::::::;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccclcc::::;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc::::;;;;;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllccccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;::;;;;;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,;;;,,;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,;;;;;;,,,;;;,,,,,,;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;,,,,,;;;;;,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::;;:;;;;;;;;;;;,,,,,;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,',,,,,,'''''''''''''''''''''''''''''''...
:::;:::;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''',''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;:;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''.......
;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,'''''''''''''''''''''''''''''''''...................
;;;;;;,,,;;;,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,,;;;;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,;;;;,,,;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,;,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d;;::::llcclloxxxkkddkkOd0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXKxoooooollllllllloooolllooooooodddoddoooooooooooooooodddddddddooooooodddoooooollccc:;::;;;;;;,,,,;;;;;,,,,'''''.'''........''';;,,;;,,,,,,,,,,,
dc:lxxxxxxOO000K0KKKXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXX0kkkkddxkkkxddxxkkkkxodOkOkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkOkkdodxxxdlcccloddl:codxoc:::looddoc:lo;,,;lc;;looolcccc:cccc:;,,,
OO00KXXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKXKKKK0OxdkkxOOOkxodkxdookOoxOkdolldxollokddxc:ddccc:ddcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookodkxxkoc::okkxxkkxkOkocdOxc:xkOOkkxddddxxxddocc
XXXXXXNXXNXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkoclkddkkkOxc::dOOkkkxdOOOkxkOOolOKKKKK0KOkO0KKKKOxo
XXXXXXNXXXXXXXKKKKKK00000OOOOOOOOOOOOOOkkOOOOOkOOOOOOOkkOOxdllddclllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:co;:dcco:;,;lkoccccokxxOkxkOllOKKKKKKKKKKKKKKK00O
KXXXXXXXXXKKK00OOOOOOOOOOOOOkOOOOOOOOOOkkOOOOOkOOOOOOOOOOkoccc:;;;::;;;,''cc:::,,;::;,,,';ccc:,',;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKKKKKKKKKKK
00OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOO0o;'.. ...',,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOkkOkkkOkddxkkkkxkd;:odxOOO0O00000000o:;,'''::::;;,,'.....'',''''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOkxkkxxxxxxxxxxdl:;'..',;ccccccc::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO00000O0000OOOOOOkkkx:....  .;:okkkkkkkkkkkkkkkxxxxxdddddddxxxddoc;,''',;:cllcc::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkk;.     .cccl; .:odkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc;;,',,,;::::::;:;;;;;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkl       .kkkkd,,',;:oxkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,,:;;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOOOOOOOOOOOOOOOOOOkkkkkk;      .kkkkxccdkkkkxxkkkkkkkxxxxxxxxxxdddddddoooloooooooddddol::;,'.',;:::::;;;;;;;,,;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkk.     .kkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddoolllllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkkOOOOOOOOOOkkkkkkkko:    .odxdoccdkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;;:::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkdooookkkkd;;:,,kkkkx;:cc'loolc;;:ll::lookkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdoooooddddddddooooddddoolc:;,,''',;;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkk;   .kkkko  . .kkkkkddddxkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxdddddddddlllllllllooooooollc:;,'.'',,;,,;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkxddddkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OkkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoooollccclllllllllllllll:;'..'',;;;,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOOkOOxk00000000KKKKKKK000000000000OOkkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooloollllccccclllll:;clllcc::;;,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOOOOOOOO00OkkOOOOOO00XKO0KOKKKKKKKKKKK0k00000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxdddddddxdxxddoooolllllcc:,,o0K00O00Od:;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOOOO0000KKKXKXXXXXXXXNNXXXXXXKKKKKKKOccxkd',o0KKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxdddddddddooooooolllllc:,.'ckKKKKXXXKOx:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,''''''''
O00kxKKKKXXXXOkXXXXXXXXXXXXXXXXXKKKKKKKKkcodd0Ok00OOOOOOOkOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooollllllllllllll:,'.';oOKKXXXXXX0o:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,''''''''''''''''''''''
OO0OKKkkkdcc,..cxKXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddoooooooooddx:'...'cOKXXXXXXK0xdddollc:,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
.;Olll;''''''',,'kXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkkl'....'o0XXXXXXKOxdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
;  :;,lxxlkdoodox0KKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxx:......;xKXXXKKXXKOxdooollodxxxddlc:;,,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
000XXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdo,........cKKKKKXXXXXKxddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;,,,,,,,''''''.''''''
XXXXXKKKK000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdo:'........'d0KKKXKXXXXX0kxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;'........;dk0KKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddddddddddddddddddddddxxxolc:;,,''''...',;cxOOxOKKXXXXXXK0Oxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooooddddddddddl:;;;;,,;,,...':OOxxoodk0KXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooool:;,,,,,,,,,,,'..'okdooddxOKXXXXXXXNNX0xxdddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooooc;,,''''''',:cl;'.:xxddxold0XXXXXXNNNNXkdddooooooooooooooooooodddoooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOkkxddoolllllllllllllllllloc;;,,'''''',coxoc;oxdlllcclxKXXXXXXXNNNOdooooooooooooooooolllllllllllooooooooddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllc:;;;;;;,,'''';lc;:clc:cclcclx000KXXXNNNKdollllllllllllllllllllllllllllllllllllooooolllc:;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkOkOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllll:;;;;;;;;;,,,''''.....cxxdccccxOO0KXXNNNXkollllllllllllllllllcccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdolllloloodxkxdoc;;;:;;;;c;;:c;,,;dkkoccccoO00KKXXNNXkoollllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000Okxdooooodk0KKK0oc:::;:cocxkl;;cxxdcc:;;:lO0KKKXXNNN0dollllllllcccllccccccccccccccccccccccc::::::::::
ddddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOOOO00000000000O000000000OxooddOKXXXXKdc:::coc:oo:,cxOo::;,,'.;d0KKXXXXNNXkolllllllccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO000000000000000000kxkO0KXXNNNXkl:c:cc:;;;,,;oo:;,,,'...'x0KXXXXXNX0dlllcllcccccccccccccccccc::::::::::::cccc::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKKK000OkO0KXXXNNNNN0o;:;,,,''....'';,'''.....;d0KKXXXNNXkolcccccccccccccccccccccc:::::::::::::cccc:::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKK000OxkOKXXNNNNNNXKo'''...........'''........'codOKXKKKOxocccccccccccccccccccc::cc:::::cc::::c::::::::
kkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000KKKK000kodkKXXNNNNNXX0:............''''.............;xxlxkkdlccccccccccc:::::::::::cc:::::ccccccc::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000dloxO0KXXXNNNKo'............''...................oxxolccccccccc:::::::::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO000000dllloodxKXXXOo,..................................lollcccccccccc:::::::::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdllccccoxxo:;,..................................cllccccccccccc:::::::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkolldddl:::;;;,..........................''.....,ccccccccccccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOdcl000Odoc;;;'.........................'',;,,,;;cccccccccccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOo;cdxOOkkxo;,'.....................''.''';;:::::cccccccccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOd;,oxxkkkkkd:,'.....................'...',;;::::::::::ccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOo,',:okkkkkd:,'........................'';;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO00O0OOOo,',,cooooollc,....'...................,;::::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKXKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOxc,',,,;cccccllc,'..''..............'',,;::::::::::::::::::::::::::::::::::::::::::::::::::;;:::;;;;
KKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddol:,,,,,,,::::clll:;,,''..........',,;clol::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKK000000000000000000OOOOOOOOOOOOOxxddoolccccccc:::::::::::::clllc:;;;,''.....':loodxkkxl::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKXXXXXXXXKKXXXKKKKKKKKKKKXKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::::::::::::::::::::clllcccc:;,,'''.',lkOOOkkxoc::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::::::::::::::::::::::::cllllccc:;,,''''',cxxxxxxdc:::::::::::::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc::::::::::::::::::::::::clllcccc:;,,'''',;cccloddoc::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollcc::::::::::::::cccc::::::::::::::::::::::::c:;;;;;;,,''''','',;;;:col::::::::::::;;;:::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
XKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc:::::::::::::::::::::::::::::::::::::::::::::;'......',,,,,,;'......',;:::;::;;;;;;;;;;::;::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkkkkkkkkkkkkkkkkkkkkkOOOOO000KKKKKKKKKKKKK00Okxddollllllllllcccc:::::::::::::::::::::::::::::::::::::::::::;'.......,;;;;;;;'.......';::;;;;;;;;;;;;;;:;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::ccc::::::::::::::::cccccccclloodxkkkkkxdooolllllllllllllllcccc::::::::::::::::::::::::::::::::::::::::::::,........;;;;;;;;'.......,;:;;;;;;;;;;;;;;;;;;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::ccccccclllllllllllccccccccclllcccccc::::::::::::::::::cc:::::::::::::::::::::::,........';;;;;;;;'.......';;;;;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::cccccccllcccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::::::;;;;;,......',,;;;;;;;;,........,;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;......,,;;;;,,,;;;;,........',;;,,,;;;;;;;;;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::::ccccccccccccccccccccccccccccccccllllccccc::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;,'......',,,,,,,,,,,;,,'.......',;,,,,,;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
:::::::::cccccccccccccccccccccccccccccccccccccccclllllllccc:::::::::::::::::::;;;;;;;:::::;;;;;;;;,,;;;;,,,'..........,,,,,,,,,,,,,,,'......,,,,,,,,,,;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::c:::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,,''............',,,,,,,,,,,,,,,,,......',,,,;;;;;;;;;;;;;;:::::;;;;;;;;;;;;;,,;;,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccc::::::::::::::::::;;;;;;,,,,,,,,,,,,,,;,,''................',,,,',,,,,,,,,,,,'........',,;;;;;;;;;;;;;;:;;:;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccc::ccccccccccccccccccccccccccccccccc:cclllcccc:::::::::::::::::::;;;;;;,,',,,,,,,,,,,,,,'...............'',,,,,'''',,,,,,'''..........',;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllcccc:::::::::ccc:::::::;;,,,;,,''','',,,,,,,,''.............'',,,,,,,,,,,,,,,,,''...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,'',,,,,,,,;;,,''.......'''',,,,,,;;;;;,,,,;;;,,''............'',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccloolccc::::::::::::::::::::;;;;;;;,,',,,,;;,;;::;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;;,,,''.............'',,,,,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllloolccc:::cc:::::::::::::::::;;::::;;:::::::::::;;;;;;;;;;;;;;;;;,,,,;;,;;,,;;;;;;,,,'''.............',,,;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllcllllooooccccccccccc:::ccccc:::ccc::,,;;::ccc::::cc::;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;,,,,,,,'............,,;;;;;,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccc::ccccccccccccccllllllccllllooooccccccccccccllllllcc:::cc::;,,,;:::::::::::;;;;;;;;,,,,;;;;;,,,,,;;;;;;;;;;;;;;;;;;,,;,,'''.......',;;;;;,,,,,,;;;;;;;;,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllclllllooooolllllllllllllllcc::::::::::::::;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccccccclllllllllllllllllllllllllllllccc::::::::::::::::;;:;:;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;::;;;;;;;;;;;;;,,,;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllllllllccc:::::::::::::;;;:::::;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcclllllllccccccccccc:::;;;;;;;:::::::::;;;;;:::::::;;;;::::::;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
::::::::::::::::::::::::cccccc:::cccclllcllcc::::::::;;;;;;;::::::::::;::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::;::::::::::::::::::::::::::cccllccccc::::::;;;;;;;;:::::::::::::::::;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''',,''''''''
::::::;;;;;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;,;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;:::::::;;;:::::::;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccllcc::::;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cc:::::::::::ccllccccccllcc:::;;;;;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllccccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;::;;;;;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,,;;;,,;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,;;;;;;,,,;;;,,,,,,;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;,,,,,;;;;;,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::;:;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::;;:;;;;;;;;;;;,,,,,;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,',,,,,,'''''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''',''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;:;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''.......
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,'''''''''''''''''''''''''''''''''...................
;;;;;;,,,;;;,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,,;;;;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,;;;;,,,;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d;;::::llcclloxxxkkddkkkd0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXX0doooooollllllllloooolllooooooodddoddoooooooooooooooodddddddddooooooodddoooooollccc:;::;;;;;;,,,,;;;;;;,,,'''''.'''........''';;,,''',,,,,,,,,,
dc:lxxxxxxOO000K0KKKXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkxodOkOkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkOkkdodxxxdlcccloddl:coddoc;,.cooddoc:lo;,,;ol;;loool;;,,;::cc;,,,,
OO00KXXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXKKKK0OxdkkxOOOkdodkxdookOoxOkdolldxollokddxc:ddccc:ddcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookodkdxkdc;:okkxkOkxkOkocdOkc:xkOOkkxddddxxxddocc
XXXXXXNXXNXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clkoclkddOkOOxc:,dOOkkkxdOOOkxkOOolOKKKKK0KOkO0KKKKOxo
XXXXXXNXXXXXXXKKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOkkOOxdllddclllddodc:oxxlc:cc::o:c:,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:co;:dcco:,,,lkoccccokxxOkxkOllOKKKKKKKKKKKKKKK00O
KXXXXXXXXXKKK00OOOOOOOOOOOOOkOOOOOOOOOOkkOOOOOOOOOOOOOOOOkoccc:;;;::;;;,,'cc:::,,;::;,,'';ccc:,',;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKocc;,ddkOO
00OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOO0o;'.. ...',,'....'''''''''''''.'''''.......................................................................................;cccllloodddol:clll
OOOOOOOOOOOOOOOOOOOOOOkkOkkkOkddxkkkkxkd;:odxOOO0O00000000o:;,'''::::;;,,'.....'',''''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOkxkkxxxxxxxxxxdl:;'..',;cccccc:;.....',,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO00000O0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxdddddddxxxddoc;,''',;:cllcc;';;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc;;,',,,;:;';;:,';;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,,:;,...';;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoooooooooooddddol::;,'.'',',;;:;;;;;;,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddoolllllllooodddddddooc::;,',,;;,;;::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkkOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;;:::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdooooodddddddoooooddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OkkkkkkkkkkkkkkkkkOOOOOOOOOkkxdddddddooooollccclllllllllllllll:;'...',;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOOkOOxk00000000KKKKKKK000000000000OOkkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooloollllccccclllll:;cllcc::;;,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO00OkkOOOOOO00XKO0KOKKKKKKKKKKK0k00000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxdddddddxdxxddoooolllllcc:,;d0K00O00ko;;;,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKKXKXXXXXXXXNNXXXXXXKKKKKKKOccxkd',o0KKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxdddddddddooooooolllllc:'.'lOKKKKXXXKOd:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,''''''''
O00kxKKKKXXXXOkXXXXXXXXXXXXXXXXXKKKKKKKKkcodd0Ok00OOOOOOOkOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllllllllllc:'..':d0XXXXXXXK0o:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,''''''''''''''''''''''
OO0OKK000kcc,..cOXXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddoooooooooddl'...''l0XXXXXXXK0xdddoll:;,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
.:NNNNXNNKxxxxONNNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkx;....';xKXXXKXK0Oxdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
c:NNNNNNNNNNNNXXXXKKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxo,.....'c0XXKKKKKXKOxdooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
00XXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdl,.......'dKXKKXXXXXX0xddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;,,,,,,,'''''''''''''
XXXXXKKKK000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdl:'........;x0KKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;........'lkO0KKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxdllc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkxkkkkkkxxxxxxxxxxddddddddddddddddddddddddddddddddddddxxxolc:;;,,'''...';:lkOkxOKKXXXXXXK0kxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO0000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooooddddddddddl::;;;,,,,'...,xOkxdoodk0XXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooool:;,,,,,,,,,,,'..cOkoooddx0KXXXXXXNXXXOxddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooooc;,,''''''',:cl;''lxddooodOKXXXXXXNNNNKxddoooooooooooooooooooodddoooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOkkxddoolllllllllllllllllol:;,,,'''''',coxl::ldlcccldk0XXXXXXXNNNXkoooooooooooooooooolllllllllllooooooooddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllc:;;;;;;,,'''';c:;;cdlcccldx0XXKKXXXXNNXOoollllllllllllllllllllllllllllllllllllooooolllc:;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkOkOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllll:;;;;;;;;;,,,'''..'oO0OkdodxkkxdkOKXXNNXKxlllllllllllllllllllcccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdollllllloxxdoc:;;;;;;;,::;;c;,:lx0KXKOOkxoldk0KXNNNKxoollllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdoolodxOKKKOd::::;;;cllxo;,,;;cxKXXXXKkxdk0KXXNNXkoollllllllcccllccccccccccccccccccccccc::::::::::
ddddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOOOO00000000000O00000000Okdodxk0KXXXKd::c::cl:coc,,;;;;;cdOKKKOOO0KKXXNNXOdlllllllcccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO0000000000000000OkkO0KXXXXXXXOc;c::cc;;;,,,,;;;;;;;:clx00KKXXNNNX0dlllcccccccccccccccccccccc::::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKKK00kxO0XXXXNNNNNKl,,,;,,''......',,,,,,'':k0KKXXNNNXXkolccccccccccccccccccccccc::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000000000Oxk0XXXNNNNNNN0c...............'''......:dxxOXXXXXKkolcccccccccccccccccccccc::::::::cc::::c::::::::
kkkOOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000000xoxOXXNNNNNNXXk'.............'''............;xKkk0Okoccccccccccccc:::cccccccc:::::::ccccccc::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000Odlok0KXNNNNNXO:...............................'.;kkxoccccccccccc:::::::::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO0000OxolooodOKXXOl:,.................................,ddllccccccccccc:::::::::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxlllccldxo:;;;'................................'ollccccccccccccccccc::::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxdO0xlcccc:;;,.................................;lccccccccccccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkdkKKKOxxxxo;,,..........................',,'',,:cccccc::ccccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOko:cdOOkkkkko;,'.....................''..'',;;::::cccccc:cc:ccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOxc;;:cdkkkkkl;,'.....................''..'',;;::::::::::ccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOkkkxc:::ccxkkkkxl;,'.........................',;;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOkxdocc::ldxkkkkxddollc;,'...''...................';;:::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKXKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO0000000Okxxxxxxkxxxolllllllc:;;,,'''..............'',,;::::::::::::::::::::::::::::::::::::::::::::::::::;;:::;;;;
KKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO00OOOkkkxxxxdooollcccccloolc::;;,''...........',,;cooxoc:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKK000000000000000000OOOOOOOOOOOOOxxddolccccccccccccc:::::cloolccc::;,,'.......'',ldxxkOOxo::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKXXXXXXXXKKXXXKKKKKKKKKKKXKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc::::::::::::::::::::clollccc::;;,''.....',,;dOOOOkkdc::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc::::::::::::::::::::::collcccc:;;,,'.....',,,:cdxxxxddl::::::::::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc:::::::::::::::::::::ccccccc:;;;,''....',,,;:cccoddddc:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKK00Okxddollcc::::::::::::::cccc::::::::::::::::::::;,'....',;;;;,'''''''',,,;;;;::cc:::::::::;;;:::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
XKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::::::::::::;'.......';;;;,,,,,,,,,;,........;;;:;;;;;;;;;;::;::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkkkkkkkkkkkkkkkkkkkkkOOOO000KKKKKKKKKKKKKK00Okxddollllllllllcccc:::::::::::::::::::::::::::::::::::::::,.......';;;;;;;;;;;;;;;;........,;;;;;;;;;;;;;:;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::cccc::::::::::::::::ccccccllodxxkOOOOkxdooolllllllllllllllcccc:::::::::::::::::::::::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;'.......,;;;;;;;;;;;;;;;;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::cccccccclllllllllllccccccccclllcccccc::::::::::::::::::cc:::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;'.......,;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::ccccccllcccccccccccccccccccccccccccc::::::::::::::::::::::::::::::::::::::;,.......,;;;;;;;;;;;;;;;;'.......',;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccc::::c::::::::::::::::::::::::::::::;;;;;;;;;;::,......,,;;;;;,,,;;;;;;;;,........,,,;;;;;;;;;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::::cccccccccccccccccccccccccccccccclllccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;'......,,,,,,,,,,,;,;;;;;,.......,,,,;,;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllccc:::::::::::::::::::;;;;;;;:::::;;;;;;;;,,;;;;,,,'..........,,,,,,,,,,,,,,,,,'......,,;,,,,,;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,,''............',,,,,,,,,,,,,,,,,'......,,,,;;;;;;;;;;;;;;:::::;;;;;;;;;;;;;,,;;,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccc::::::::::::::::::;;;;;;,,,,,,,,,,,,,,;,,''................',,,,',,,,,,,,,,,,'........',,;;;;;;;;;;;:;;:;;;:;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::ccccc:::ccccccccccccccccccccccccccccccccc:cclllcccc:::::::::::::::::::;;;;;;,,'',,,,,,,,,,,,,'...............'',,,,,'''',,,,,,'''..........',,;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllcccc:::::::::ccc:::::::;;,,,;,,''','',,,,,,,,''.............'',,,,,,,,,,,,,,,,,''...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,'',,,,,,,,;;,,''.......'''',,,,,,;;;;;,,,,;;;,,''............'',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc::::::::::::::::::::;;;;;;;,,',,,,,;,;;:;;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;;,,,''.............'',,,,,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllloolccc:::cc:::::::::::::::::;;::::;;::;::::::::;;;;;;;;;;;;;;;;;,,,,;;,;;,,;;;;;;,,,'''.............',,,;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:cccccccccccccccllllllccllllooooccccccccccc:::ccccc:::ccc::,,;;::ccc::::cc::;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;,,,,,,,'............,,;;;;;,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccc::c:ccccccccccccllllllccllllooooccccccccccccllllllcc:::cc::;,,,;:::::::::::;;;;;;;,,,,,;;;;;,,,,,;;;;;;;;;;;;;;;;;;,,;,,'''.......',;;;;;,,,,,,;;;;;;;;,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllclllllooooollllllllllclllccc::::::::::::::;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccccccclllllllllllllllllllllllllllllccc::::::::::::::::;;;;:;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;::;;;;;;;;;;;;;,,,;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllllllllccc:::::::::::::;;;:::::;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcclllllllccccccccccc:::;;;;;;;;::::::::;;;;;:::::::;;;;::::::;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
:::::::::::::::::::::::::ccccc:::cccclllcllcc::::::::;;;;;;;::::::::::;::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::;::::::::::::::::::::::::::cccllccccc::::::;;;;;;;;:::::::::::::::::;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''',,''''''''
::::::;;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;:::::::;;;:::::::;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccllcc::::;;;;;;,;;;;;;;;;;;;;;;;::;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cc:::::::::::ccllccccccllcc::;;;;;;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllccccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;:;;;;;;;;;;;;,,,;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,;;;;,;;;,;;;;;;;;;;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,;;;,,;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,;;;;;;,,,;;;,,,,,,;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;,,,,,;;;;;,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::;:;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;;::;;;;;;;,,;;,,,,,;;,,;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,',,,,,,''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''',''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;:;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''.......
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,'''''''''''''''''''''''''''''''''...................
;;;;;;,,,;;;,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,,;;;;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,;;;;,,,;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d;;::ccllcclloxxxkkddkkkd0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXX0doooooollllllllloooolllooooooodddoddoooooooooooooooodddddddddooooooodddoooooollccc::::;;;;;;,,,,;;;,;,,,,'''''''''........''';;,,;;,,,,,,,,,,,
xc:lddxkkkOO000K0KKXXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkxodOOOkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkkkkdodxxxdlcccloddl:coddoc:::looddoc:lo;,,;lc,;looolccccccccc:;,,,
OO00KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXKKKK0OxdkkxOOOkdodkxdookOoxOkdolldxollokddxc:ddccc:ddcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkdxkdxkdc::dkkxkOkdkOkocdOkc:xOOOOkxddddxxxddocc
XXXXXXNXXNXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:cdxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clkoclkddkkOOkc::xOOkkkxdOOOkxkOOolOKKKKK0KOkO0KKKKOxo
XXXXXXXXXXXXXXKKKKKK00000OOOOOOOOOOOOOOkkOOOkkOOOOOOOOkkOOxxolddclllddodc:okxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dccoc;,;lxocccclkxxOkxkOllOKKKKKKKKKKKKKKK000
XXXXKKXXXXKKK00OOOOOOOOOOOOOOkkOOOOOOOOkkOOOkkOOOOOOOOOOOkolllc:::clc;;,,,ccc::,,;::;,,,';ccc:,',;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKocc;,ddkOO
00OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOo:;;;;;;;,,,'....'''''''''''''.'''''.......................................................................................;cccllloodddol:clll
OOOOOOOOOOOOOOOOOOOOOOkkOkkkOkkkkkkkkkkkkOOOOOOO0O00000000dcccccc:::::;,,'.....'',,,''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdl:,'..';:ccccccc::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO0000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxdddddddxxxddlc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc;;'',,,;::ccc::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddddddddddolc:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoooloooooooddddolc:;,'.',;:::::;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOkOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddoolllllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkkOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;::::::;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdooooodddddddoooooddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OkkkkkkkkkkkkkkkkkOOOOOOOOOkkxdddddddooooollccclllllllllllloll:;''.'',;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOO0OOOO00000000KKKKKKK000000000000OOkkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooloollllccccllllllc;,;;;;,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKKXXXXKKXXKKXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxdddddddxdxxddoooolllllcc;lkkxxddllc;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKKXXXXXXXXXXNNNXXXXXKKKKKKKKKXXXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxddddddddddooooolllll:;'':k0000KKXKxo:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooollllllllllllc;'.';d0KKXXXXX00Ooc:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,''''''''''''''''''''''
KXXXXNNNNNNNNNNNXXXXXXXXXXXXXKKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddoooooooood;'..',lkKXXXXXX0O0kxdddollc:;,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
XNNNNNNNNNNNNNNNXNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxx:....';xKXXXXXX0xkkxdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXKKKK000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxx;.....'lOKXKKKK0OKKKkdoooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdo,......,dKXKKKKXXXXXXkdddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''
XXXXXKKKK000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdoc:........:OKKKKKKXXXXXKkxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxdolc:,.......,d0KKK00KKXXXXXKOkxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddddddddddddddddddddddxxolc::;,''.....'cdO0OxdOKXXXXXXXXK0kxxxxxxxxxxxxxxxxxxxxxxxxddol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddoooooooooooooooooooooooodddddddddl:;;;;;,,'...':c:;ddllok0XXXXXXXNXXKOkxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdoooooooooooooooooooooooooool:;,,,,,,,,,''''x0xoc::lox0XXXXXXNNNNX0xxddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooolllooooooooooooooooc;,,''''''',,,'',l:;;;;lox0XXXKKXXNNNNXkdddoooooooooooooooooooodddoooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOkkxxdolllllllllllllllllll:;,,'''''''',,,,,,,,,,;;cdOKXXK0KXXNNNNOdoooooooooooooooooolllllllllllooooooooddddlc:;,'''
xkxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddlllllllllllllllc:;;,'',,'''''',,''''',,,:lkOkkxkKXXXNNN0doollllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkOkOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOxolllllllllllllc:;;,'',;,''''........'''';clc::dKXXXNNNKdllllllllllllllllllllcccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdoolokkdooolc:;,,,;;,''''.','....'''',;;;::dKKXXNNNKdolllllllllllllllllccccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O0000000000OkxO0kxxddddl:,,;:,''''.'''....''',,,;;;:dKKXXNNNXkolllllllclllccccccccccccccccc:::::cccccc:::::::::
ddddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOOO000000000000KKKXXXXXXKXKKKK00Okl,,,;'''''.'''..''''''',,,;:xKKXXXNNX0dlllllccccccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkOOOOOOOO00000000KKXXXXXXXXXXXXXXXXXO:'..'''''.......'''''''',;lOKKXXXNNNKxlllccccccccccccccccccccccc::::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KXXXXXXXXXXNNNNNNXx,...............''''''',:coOKKXXXNNNXOolcccccccccccccccccccccccc::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000K0000Ox;l0KXXXXXKk:.............'okOOkxc;;dkkOO0KKKKKKKK0occcccccccccccccccccccccc::::::::cc::::c::::::::
kkkOOOOOOOOOOOOOOOOO0000000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0000000000Oxc'd0dxKXKkc;,.........',;,'d000000kx00000O00000OOOkoccccccccccccccc::cccccccc:::::::ccccccc::::::::
kkkkkkOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000ko:;;:dkdc:;;;,.......';ldocxO000OdddoxK0xddxkkkkkkxlccc:ccccccccc::::::::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO0000OOkxdc::::;;;;;''....';cdkoc;,,,,,'..',::,,,cooodddlcccc::::ccccc:::::::c:::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkdoc:;;;;,''''''';;::'...................',;::cccccccc:cccccccccc::::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkdc;;,,''...............................,;;::::::::cccccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxl:;,,,''.....................''.......',;;::::::::::ccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOkkd:;;,,,'''....................''......',;;::::::::cccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOkkxo:;;,,,''''..........................',;;::::::::ccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkOOOOOOOOOOkxdoc:;;,,,,''..........................';clc::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000000000000OOkxdolcc:;;,,,,,'.........................';ldddc:::::::::cc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO0000000000000Oxdollccc:;;,,,,,''''''''''''''.........'',;coddxko:::::::::::::::::::::::::::::::::::::::::;;:::;;;;
KKKKKXXXXXKKKKKXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkkxddoolllccc:::;;,,,,,,,,,,,,,;,,,,,,,,,,,,;;;::clodOKxcc::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKK000000000000000000OOOOOOOOOOOOOxxddollccc:;,,,;:cccc:::::;;;;;;;;;;;;;;;;;;;;;;;;;;::::ccoxkk0Kkdolccc::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKXXXXXXXXXKXXXKKKKKKKKKKKXKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::;'......';cc:::::::;;;;;;;::::::::::::::::::::cccdkOOOxdddlccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::::::'........,::::;;;;;;;;;;;;:::::::::::::::;;,,;;;;:collldxdoc::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc::::::'........':::;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;:cccc::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKXXKKKKKKKK00Okxddollcc:::::::::::::ccccc::::::;'.........;:;;;;;;;:::::::::::::::::::::::::::;;;;,'......';:::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc:::::::::::::::::::::::::::::,.........;:;;;;;;::::::::::::::::::::::;;;;;;;;;'........,;;::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
OOOOOOOOOOOOOOOOOOOOOOOOO000000KKKKKKKKKKKKKKK00Okxddollllllllllccc:cc:::::::::::::::::::::::::::;'........;;;;;;;:::::::::::;::;;;;;;;;;;;;;;;;;;'........;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
cccccccccc::::ccccccccccccccccclloxxkO00OOkxdooolllllllllllllllcccc:::::::::::::::::::::::::::::::::,.......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'........;;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::cccccccllllllllllllccccccccclllcccccc::::::::::::::::::cc::::::::::::::;'......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::ccccclllccccccccccccccccccccccccccc::::::::::::::::::::::::::::::::::;;;,......,;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;,,.........,;;;::::::::;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccclccccccccccccccccccccccc::::c::::::::::::::::::::::::::::::;;;;;;;;;'........',,,,,;;,;;;;;;;;;;;,,,,;;;;,'........';;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::::cccccccccccccccccccccccccccccccclllccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;,...........',,,,,,,,,;,;;;;;;;;;;;;,'........,;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllccc:::::::::::::::::::;;;;;;;:::::;;;;;;;;,,;;;;,'............,,,,,,,,,,,,,,,,,,,;,,'........,,;;;;;;;;;::::::;;;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,,''............',,,,,,,,,,,,,,,,,,''.........,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllcc:::::::::::::::::::;;;;;;,,,,,,,,,,,,,,;,,''...............'',,,,,,,,,,,,,,,,'...........,,;;;;;;;;;;;;;:;;;:;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccc::ccccccccccccccccccccccccccccccccc:cclllcccc:::::::::::::::::::;;;;;;,,'',,,,,,,,,,,,,'..............''',,,,,''',,,,,,,''...........',;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllcccc:::::::::ccc:::::::;;,,,;,,''''''',,,,,,,''............',,,,,,,,,,,,,,,,,,,'.............,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,'',,,,,,,,;;,,''.......'''',,,,,,;;;;;,,,,;;;,,''.............',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc::::::::::::::::::::;;;;;;;,,',,,,,;,;;;;;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;;,,,'..............'',,,,,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllloolcc:::ccc:::::::::::::::::;;::::;;;:;;:::::::;;;;;;;;;;;;;;;;;,,,,;;,;;,,;;;;;,,,,'''.............',,,;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllcllllooooccccccccccc::::cccc:::ccc::,,,;::ccc::::cc::;;;;;;;;;,,;,,;;,,,,,,;;;;;;;;;,,,,,,,,,,,'............',,;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccc:cc:ccccccccccccllllllccllllooooccccccccccclllllllcc:::cc:;,,,,;:::::::::::;;;;;;;;,,,,;;;;;,,,,,;;;;;;;;;;,,,,;;;,,,;,,'''.......',;;;;;,,,,,,;;;;;;;,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllcllllloooolllllllllllclllccc::::::::;;;;:::;;;::::;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccc:ccclllllllllllllllllllllllllllllccc:::::::::::::::;;;;;;;;;;;::::;;:;;;;;;;;,;;;;;;;;;;;;;;;;;;:;;;;;;,,,;:;;;;;;;;;;;;;,,,;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllllllllccc:::::::::::::;;;:::::;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;;;;;;;;;;;;;,;,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcclllllllllccccccccc::::;;;;;;;;:::::::;;;;;:::::::;;;;;;::::;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;,,;;;;;;;;;;;;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
:::::::::::::::::::::::::ccccc:::cccclllcllcc::::::::;;;;;;;::::::::::;:::::::::::::::::::;;;;;;;;;;;;;;:;;;;;,,,;;;,,,,;;;;;;;;,,;;;;;,,;;;;;;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::;::::::::::::::::::::::::::cccllccccc::::::;;;;;;;;:::::::::::::::::;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''',,''''''''
::::::;;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;::::::;;;;;;:::::::;;;:::::::;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;,;;;;;;;;;;;;;;;;,;;;;;;;;,,,;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;;;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllccccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;:;;;;;;;;;;;,,,,;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllcccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,;;;,,;;;,;;;;;;;;;;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;;,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,;;,;;,,,;;;,,,,,,;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;;,,,,;;;;;,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;;;:;;;;;;;;;;;,,,,,;;,,;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,',,,,,,''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''',''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;:;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''.......
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,'''''''''''''''''''''''''''''''''...................
;;;;;;,,,;;;,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,,;;;;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,;;;;,,,;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
d:;:::cllcclloxxxkkxxkOOk0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXX0doooooollllllllloooolllooooooodddoddooooooooooooooooddddddddddoooooodddoooooollccc::::;;;;;;;;,,;;;;;;,,,'''''.'''........''';;,,;;,,,,,,,,,,,
xc:lxxxkkkOO000K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkkodOkkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddxkOkxddddkOkkdodxxxdlcccloddl:coddoc:::looddoc:lo;,,;lc;;looolcccc:cccc:;,,,
OO00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXKKXKKKK0OxdkkxOOOkxodkxdookOoxOkdolldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkdxOdxkdc::dkkxkOkxkOkocdOkc:xkOOOkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:cdkocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clkoclkddkkOOkc::dOOkkkxdOOOkxkOOolOKKKKK0KOkO0KKKKOxo
XXXXXXXXXXXXXXKKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxxolddclllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dccoc;,;lxocccclkxxOkxkOllOKKKKKKKKKKKKKKK00O
XXXXXXXXXXKKK00OOOOOOOOOOOOOkkOOkOkkOOOkkkkOOOOOOOOOOOOOOxlcllc:::clc;;,',ccc:;,,;::;,,,';ccc:,.,;;,',;:;;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;;:;:xO00000KKKKKKKKKKKK
0000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOko:;;;;;;;,,,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOkkkkkkkkOkkkkkkkkkkkkkOOOOO00000000000dcc:ccc:::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkxkxxxxxxxxxxdl:;'..';:ccccccc::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOO00000O0000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxdddddddxxxddoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000O00000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc;;'.,,,;::ccc::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKK00KKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoooooooooooddddolc:;,'.',;:::::;;;;;;;,;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOkOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddoolllllllooodddddddooc::,,',,;;:::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkkOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;::::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoooooddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KKKKKK00OkkkkkkkkkkkkkkkkkOOOOOOOOOkkxdddddddooooollccclllllllllllloll:;''..',;;,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKKK000000000000OOkkkkkkkkkkkkkkkkkOOOO0K0K00Okxxxdddddddddoooooooloollllccccclllllc;,;;;,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKKXXXXKKXXXXXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxdddddddxdxxxdoooollllcc:lddoolc::;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxdddddddddooooooolllc:,,o000O0000kdo:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,''''''''
O000KKKKKXXXXkkXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooollllllllllll;..';x0K0KXXXKOOOoc::::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,''''''''''''''''''''''
KXXXXK000x...  'xKXXXXXXXXXKKKKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000OOkkkkxxxxxkkkkkkkxxxxxxxxxxdddooooooool:'..,;o0XXXXXXK0kOkdddddollc;,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,''''''''''
.:NNNNNNNKxxxxONNNXXXXXXKKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOOOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxo'...',cOKXXXXXX0oxkxddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
;;NNNNNNNNNNNNXXXXKKKK000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxd,....',xKXXXXXKOk0XX0xooooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
00XXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxo'.....'lOKXKKKKKKXXXX0xxxxddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''
XXXXXKKKK000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdl:.......,o0XXKKKKKXXXXXOxxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxdolc:,.......'l0KKK0kOKKXXXXXKK0Okxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddddddddddddddddddddddddddddocc:;;;,'.....,ok0KOdox0XXXXXXXNXXKkxxxxxxxxxxxxxxxxxxxxxxxxddol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooooddddxddol:;;;;,,,'....,;;:xdccox0XXXXXXNNNXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdoooooooooooooooooooooodx0kdc;,,,,,,,,,''''dOocc;,cod0XXXKKXNNNNX0xxdddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollllooooollccclodddc;,,''''''',,,';c:,,,,;coOXXK0KKXNNNNXkdddooooooooooooooooooooodddoooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOkkxxdolllllllllc::;;;;:xk:;,,'',,''',,,,,,,,,'',:lk0OOO0KXXNNNXOdooooooooooooooooooolllllllllllooooooooddddlc:;,'''
xkxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollllc:;;;;;;cxo:;,,'',;'''''''....''''';cccld0KXXNNNXkolllllllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxdolll;::::cclol:;,,',;;''''........'''',;;;cd0KXXNNNXxolllllllllllllllllllllcccccccccccccccccccllllcccccc
xxxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdl;ckOOkkxddl:,,,,;;''''.','....'''',;;:cx0KXXNNNXkolllllllllllllllllllccccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O00000000Od,:k000KK0Oxl;,,,;;''''.','....''',,,;:ck0KXXNNNNKxllllllccclllcccccccccccccccccc:::::cccccccccc:::::
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOOO0000000000000000Od;dO0KKKXXXKOc'..''''''.''...'''''',,;:d0KKXXNNNNXklccccccccccccccccccccccccccc:::::::::::::c::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxkkkkkkkOOOOOOO00000000000Oko::xkdOKXXNXO:.................'''',,;lk00KXXNNNNX0lccccccccccccccccccccccccccc::::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOO00000000000kl;,;;,xKXNXkc'.................'''',;:oO00KKXXNNNNKoccccccccccccccccccccccccccc::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOOO00000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000000kc,,,,c0K0kc;,,'...............''''',cdkO00KKXXXXXXXocc:cc:::cccccccccccccccccc:::::::::c::::c::::::::
kkkOOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0000000000d:;,;xdl::;;;,,.........''...''''',:okOOO00KKK000OOoccccc::::cccccccc::cccccccc:::::::ccccccc::::::::
kkkkkkOOOOOOOOOOOOOO0000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000kkdc;;;:lol:;;'.............'',lddxxxxkkkOkkkkkkkxlcccc:::::cccccc::::::::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkOOOOOOOOOOOOOOOO0000OOOkxodkOOd:;;,'........'...'.,x00Oxo:::::clloooolcc::::::::ccccc:::::::::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkc;;;,,'''''''',;,'''';dxo;'......';::::cc::cccccc:cccccccccc::::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxl:;;;,,''''''.'','''...............,;;:::::::::::cccccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxl:;;,,,''''.........................,;;:::::::::::::ccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOkko:;;,,,''''...................,'....'',;;::::::::::ccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOkxdl:;;,,'''.....................'.....',;;:::::::::ccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkOOOOOOOOOOkdolc:;;,,,''..........................';cooc::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000000000000OOkxdolcc:;;,,''..........................';lddxxl:::::::::cc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKK0xxxxkKKKK0xxxxkKKKKKKKKKKKKKKKKKKKKKKK00000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOO0000000000000OOxdollccc:::;;,'....'',,,,,''''....''''',,;coddk0dc:::::::::::::::::::::::::::::::::::::::::;;:::;;;;
KKKKO;;;;lKKKK0dddddlllldKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxdlcccc::cc::::::;;,...',,;;;;;;;,,,,,,,;;;:::ccodk0Kxolcc:::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKx    .KKKKO:x0KKKKKKKKKKKKKKKKKKKKKKKk:ckKKKKKKKKK000000000000000000OOOOOOOOOOOOOxxddollccc;,'....'..::;;;;;;;;;,,;;;;;;;;;;;;;;;;;::::ccoxxk00kxdoccc::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKk....,KKKKk.:OKKOOOOOKK0OOKKKKKKKKKKKl:.'OO0KKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::;'.........:;;;;;;;;;;;:::::::::::::::::::::cccdOO00xxxdocc:::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKx    .KK: .KKKKKKKKKKKKKKO::ckKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::::::;........'::;;;;;;;::::::::::::::::::::::::;,;;:loolldxddl::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKl.lKKKKKOOOOOKK: .KKKKKKKKKKKKKKKKK0dxKKKKKKKKKKKKKKK00Okxdolccccccc:::ccccc::::::;.........,;;;;;;;;:::::::::::::::::::::::::;;,;;::;:cllcc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKK0odKKKKKKKKKKKKkodKKKKKKKKKKKKKKKKKKddKKKKKKKK00Okxddollcc:::::::::::::ccccc:::::::;'........';;;;;;;;::::::::::::::::::::::::;;;;;,''.....';:::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::,........';;;;;;;::::::::::::::::;;;;;:;;;;;;;,........,:::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
0000000OOOOOOOOOOOOOOOOOO000KKKKKKKKKKKKKKKKKK00Okxddollllllllllccc:cc::::::::::::::::::::::::::::;,.......';;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;........;:;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
ccccccccccccc:ccccccccccccclllodkO00KKK0OOkxdooolllllllllllllllcccc:::::::::::::::::::::::::::::::::,.......';;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;........,;;;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::cccccccllodollllllllllccccccccclllcccccc::::::::::::::::::cc:::::::::::::;;,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,........,;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::ccccccccclllccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;,......,;;;;;;;;;;;;;;;;;;;;;;,;,;;;;;,'........';;;;;::::::::;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc::::c::::::::::::::::::::::::::::::;;;;;;;;;'........'',,,,,;,;;;;;;;;;;;,,,,;;;,.........';;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::::cccccccccccccccccccccccccccccccclllccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;,...........',,,,,,,;;;;;;;;;,;;;;;,'........';;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllccc:::::::::::::::::::;;;;;;;:::::;;;;;;;;,,;;;;,'............,,,,,,,,,,,,,,,,,,,,,,'.......,;;;;;;;;;;;::::::;;;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccclllllccc:::::::::::::::::::;;;;;;;;;;;;;;;;;;,,,,,,,,''............',,,,,,,,,,,,,,,,,,'.........',,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllc::::::::::::::::::::;;;;;;,,,,,,,,,,,,,,;,,''...............'',,,,,,,,,,,,,,,,'...........,;;;;;;;;;;;;;;:;;;:;;;;;;,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccc:::ccccccccccccccccccccccccccccccccc:cclllccc::::::::::::::::::::;;;;;;,,'',,,,,,,,,,,,,'..............''',,,,''',,,,,,,,''..........',,;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllccc::::::::::ccc:::::::;;,,,;,,''''''',,,,,,,''............',,,,,,,,,,,,,,,,,,,'............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,''''''',,,;;,,''.......'''',,,,,,;;;;;,,,,,;;,,'..............',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc::::::::::::::::::::;;;;;;;,,''',,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,;;,,,,,,;,,,,''.............''',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllloolcc::::cc:::::::::::::::::;;:::;;;;:;;:::::::;;;;;;;;;;;;;;;;;,,,,;;,;;,,;;;;;,,,,'''.............',,,;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllcllllooooccccccccccc::::ccc::::ccc::,,,;::ccc::::cc::;;;;;;;;;,,,,,;;,,,,,,;;;;;;;;;,,,,,,,,,,,'............',,;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''
::::::::::::::cccc::c:ccccccccccccllllllccllllooooccccccccccccllllllcc:::cc:;,,,,;:::::;:::::;;;;;;;,,,,,,,,;;,,,,,;;;;;;;;;;,,,,;;;,,,,,,'''.......',;;;;;,,,,,,;;;;;;;,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllcclllloooolllllllllllclllccc::::::::;;;;:::;;;::::;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::cc::::::::cccccccccclllllllllllllllllllllllllllllccc:::::::::::::::;;;;;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;,,,;:;;;;;;;;;;;;;,,,;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllllllllccc:::::::::::::;;;:::::;;::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,;;;;;;;;;;;;;,;,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcclllllllllccccccccc:::;;;;;;;;;;::::::;;;;;:::::::;;;;;;::::;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,''''
:::::::::::::::::::::::::ccccc:::cccclllcllcc::::::::;;;;;;;::::::::::;;:::::::::::::::;::;;;;;;;;;;;;;;:;;;;;,,,;;;,,,,;;;;;;;;,,;;;;;,,;;;;;;;,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,''''''''',,,,,,,,,,,'''''
::::::::;::::::::::::::::::::::::::cccllccccc::::::;;;;;;;;:::::::::::::::::;;::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''',''''''''
:::::::;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;:::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;:::::::;;;:::::::;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;,;;;;;;;;;;;;;;;,,,;;;;;;;,,,;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;;;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllccccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;::;;;;;;;;;;;,,,,;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::cllllllccccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,;;;,,;;;,;;;;;;;,;;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;;,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,;;,;;,,,;;;,,,,,,;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;;,,,,;;;;;,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;,;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;;;;;;;;;;;;;;;,,,,,;;,,;;;;;;;;;;;:;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,',,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;,,;;;;;;;;;;;;;;;;;;;;;;,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''',''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;:;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''.......
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,'''''',,,,,,''''''''''''''''''''''''''''''''''''''.............'
;;;;;;,,,;;;,;;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,,;;;;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
;,,;;;,;;;;,,,;;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,,''''''.''''''''''''''''''''''''''''''''''''''''.........................
kc;:::cllcccldxxxkkkkkO0k0XXXXXXXXXXXXXXXXXXKKXXXXXXXXXXX0doooooollllllllooooollloooooooddddddooodoooooooooooodddddddddooooooddddoooooollccc:;:;;;;;;;;;;;;;:;;;,,,'',,'''''........',,;;,;;;;,,,,,,,,,,
xc:lxxxkkkOO00KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkkoxOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkddddxkkkkddkkOkxddddkOkkdodxxxdlcccloddl:coxxoc:::ldddddc:lo;,,;lc;;looolccccccccc:;,,,
OOO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkoxkdxkdc::dkkxxOkdkOkocdOkc:xkOOOkxddddxxxddlcc
XXXXXXXXXXXXXXXXXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clxoclkddkkOOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KKKKOxo
XXXXXXXXXXNXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOkxolxdcoolddodc:oxdlc:lc::o:lc,cdol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:;,;okoccccoOxxOOxkOllOKKKKKKKKKKKKKKK00O
XXXXXXXXXXKKK00OOOOOOOOOOOOOOOkkOOOOOOOkkOOOOOOOOOOOOOOOOkocllc:::llc;;,',ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......,;,'..''''......',,..,;;;'.....,;,...'''......'.....':;;::;::;:dO0000KKKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOo:;;;;;;;;,,'....'''''''''''.'.''''........................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOkkOkkkkkkkkkkkkkkkkOOOOOOOO0000000000dcc:cc::::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOkkOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOkOOOOOOkxkxxxxxxxxxxdl:;'..';:cccccc::::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000O00OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxdddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxxxxxxxdoc;,'.,,;;::ccc::::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdddddddddddddddddolc:;;,',,;::;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOO0OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddddddooollooooooddddolc:;,'.',;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoolllllllooodddddddooc::,,'',;;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;::::::;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxdooooodddddddooddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000K0KKKK000OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddooooooolc:clcllllllllllllc:;'...',;,,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOOO00000000000KKKK00000000000000OOkkkkkkkkkkkkkkkkkOOOO0KKKK0Okxxxdddddddddddddoooolollllccccllllll:,,,,,,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXKKXXXXXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxddddddxxxxdddoooolllc;lkkxddocccc:;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOkkkkkkkkkkkkxxxdxxddddddoooooollc:,,o0K0O0KK00kxxl;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,''''''''
0000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllc:'.';d0KKKXXXX0O00dllc:::;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,,''',''''''''''''''''''
KXXXXXNNNNNNNNNNNXXXXXXXXKKKKKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOO00000000Okkkkkxxxxxkkkkkkkxxxxxxxxxddddooooool:,'.';lkKXXXXXXKkdOkxdddddollc:;,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNXXXXXXXKKKKKKKK000OOOOkkkkkkkkkkkkkkkkkOOOkOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxl'...'';o0XXXXXX0ocOK0xddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxo,....''ckXXXXXX0xkKXXKkdooooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxdl'......;d0XXKKKKKKXXXXKkxxxxddddxxxxxxxxxxdoc;;,,,,,,;;;;;,,,;;,,,,,,''''''''''''''
XXXXXKKKK000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxdol;........;xKXKKK00KXXXXXK0kxxxxxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxolc:,........;x0KK0xdOKXXXXXXXXK0kxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK00000OOOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddddodddddddddddddddddddddddddddddolc:;'.......;dO00dldOKXXXXXXNNNNKkxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdoooooooooooooooooooooooolc:::::dkkkxdllc,...,:,;lxlcokKXXKKKXXNNNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOOkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooool;,,,,,,:kkkkkkxxkxc'':xl....,lxKXKKKXXNNNNNN0xdddddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollllooolllc;,,,''',:::::c:;:l;''''......cxKXK0KKXNNNNNNKdddooooooooooooooooooooooooooooooddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOkkxxxdoollllllc;,:clkkc'''''''''...............;okOO00KXNNNNNN0dooooooooooooooooooooolllllllllllooooooooddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddoollc'.';d0O:'''''....................';lx0KXNNNNNNN0oooollllllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxxxxkkkkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxdoll,.:dk0Ol,'''......................,lk0KXNNNNNNXOooolllllllllllllllllllllccccccccccccccccclllllccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdo;.':dO0x;'''.....................':dOKXXNNNNNNXOoolllllllllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0000O000000Odo;..',lOOx:,'....................,cdOKXXXNNNNNNXxollllllllllcccccccccccccccccccccc:::::ccccccccccccccc
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO000000000000000Odc'...'l0Kx:,'..................',:dk0XXXNNNNNNXOollllccccccccccccccccccccccccccccc::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOOO00000000000d:'...cOOo;,''..................',cdk0XXNNNNNNNXdllcccccccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOO000000000kl:,,:oo:,''',;::;'............',;cok0XXNNNNNNX0ollcccccccccccccccccccccccccccccccc::::::::::::::::::::
xkkkOOOOOOOOOOO0000000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000000Okocc::;;:lxOOOd:,''.........,;:cokOKXXNNNNNNXOolccccc::::::::ccccccccccccccccc:ccccccccc:c::c::::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0000000K000OdlllldO00000d;,'''.......',:loxOKXXXNNXXXXXKklccccc::::::::::cccccc::cccccc::::ccccccc::::c::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000000O000KKKK00l,,'''.......,:lddkO0KKKKK000000klccccc::::::::::cccc:::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkOOOOOOOOOOOOOOOOOO0000000K0KKKKKK0l,,'''......'coddddddxxxxxxddollcccccccc:::::::::ccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000K0l,,''''....;odddd:,,,,;:ccccccc:::::cccc::cc:::cccccccccc::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkOOk:,,,''''..'dOOxl,......',;::::::::::::::::::::ccccccccccc::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkc,,,''''....'lxl.........',,,,,;;;;::::::::::::ccccc::::::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOkc,,,''''.................'''''',,;;::::::::::cccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000KK0000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOOOd:,,'''......................'',;;;::::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOxl:;,''......................';:::::::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000000000OOOOOkkkkkdl:;,....................'',:oolcc:::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKK000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkxxxdoloodol:;,..........'''....',;:cloxxc::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKXKKXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddolccccccccodoc:;'.........,;;;,'';clloxkOOd:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKXKKXXXXXXXXKKKKKKKKKKKKKKKXXXXKKKKKKKKKK0000000000000000000OOOOOOOOOOOkxxddollccccccccc:::::ccodoc::;........;:::;''':xkOOOOOxl:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKXKKKKXXXXXXKKKKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKK00000000000000OOOOkxdoolcccc::::::cccc::::::cccccccc::;.....';:::;''',:dxkkkxxdc:::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKXXKXXKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccccc:::::::::::::::::::c;..'...','...,;:::;,'',:cllodddo::::::::::::;:::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXXXXXXKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxdolcccc::ccccccccc::::::::::::::::::::.......';;;'';:::::;,,,;::::looo::::::::;;;;;;::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKXXXXXXXKKKKKKKXXXXXXKKKKKKKKKKKKKKKXXKKKKKKKK00OOxddollcc::::::::::::::cccc:::::::::::::::::::,.......,;;;;::::::::;,.......,:::::::::;;;;;;;;:::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllccccc::::::::::::::::::::::::::::::::::::::'.......;;:::::::::::;'.......';:::;;;;;;;;;;;;;;;:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxxxxdddddooooooooooolooddxxk0KKKKKKKKKKKKKKKK00Okxddollllllllllccc::::::::::::::::::::::::::::::::::::::::'.......;::::::::::::;'.......';:::;;;;;;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::ccccclok00KKKK0OOkxdooollccclllllllllcccc:::::::::::::::::::::::::::::::::::::::::'.......;::::;;;;;;;;;........';::;;;;;;;;;;;;;;;;;:::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::cccccccloxxdolllllllllccccccccllllccccc:::::::::::::::::::ccc:::::::::::::::::::'.......;;;;;;;;;;;;;;.........;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::ccccccccccccccccclllccccccccccccccccc::::::::::::::::::::::::::::::::::::::::::;.......;;;;;;;;;;;;;;,'.......';;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::cccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;:::;,......,;;;;;;,;;;;;;;;,.......,;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::ccccccccccccccccccccccccccccccccccccccclccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;,.......,;;;,,,,;;;;;;;;,......',;,,,,;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
::ccc:::::cccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::;;;;;;;;;;:::::;;;;;;;;,,;;;;,,;;..........,,,,,,,,,,,,,,,,......,,,,,,,,,,;;;;;;;;;;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::cccccccccccccccccccccccccccccccccccccccccccccccllllllccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,''''...........',,,,,,,,,,,,,,,'.....,,,,,,,,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc:ccllllcc::::::::::::::::::::;;;;;;,,,,,,,,,,,,,,,,,'''................',,,,,,,,,,,,,,,,'......',,,,,;;;;;;;;:;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::ccc::::::ccccccccccccccccccccccccccccccc::cclllccc:::::::::::::::::::::;;;;;,,'',,,,,,,,,,,,''................'',,,'''',,,,,,,'''........',,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::c:::::::::::c:ccccccccccccccccccccccccccc:cllllccc::::::::::ccc:::::::;;,,,;,,''''''',,,,,,,''............'',,,,,,,,,,,,,,,,,''...........'',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::cc:cccccccccccccccc::::ccccccccclllcccc::::::::::ccc::::::;;;,,,;,,''''''',,;;;,,''.......''',,,,,,,;;;;,,,,,;;;,,'..............',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccccloolccc:::::::::::::::::::;;;;;;;;,,''',,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;,,,''..............'',,,,;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccclooolcc::::cc::::::::::::::::;;;:::;;;;:;;:::::::;;;;;;;;;;;;;;;;;,,,,;;,;,,,;;;,,,,,''''.............',,,;;;;,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccclllllllcclllooolccccccccc::::::cccc:::ccc::,,,;;:ccc::::c::;;;;;;;;,,,,,,,;;,,,,,,;;;;;;;;;,,,;,,,,,,,'............',,;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::cccccccccccccccccccccllllllccclllloolcccccccccccclllllccc:::cc:;,,,,;;:::::::::;;;;;;;;,,,,,,,,;;,,,,,;;;;;;;;;;,,,,;,;,,,,,,'''.......',;;;;;,,,,,;,;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccccccccclllllllcclllloooolllllllllllllllccc:::::::;;;;;;;;;;;::::;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,',,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc;;::::::ccccc:ccccllllllllllllllollcllllllllllcccc:::::::::::::::;;;;;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;,,;;:;;;;;;;;;;;;;,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllcllllllcc:::::::::::::;;;:::::;;::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;;;;;;;;;;;;;,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllccllllllllcccccccccc:::;;;;;;;;;;:::::;;;;;;::::::;;;;;;;::::;;;;;;;;;;;;;;;;;;,,,;;;;;;,;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc:::cccllllcllcc::::::::;;;;;;;;:::::::::;::::::::::::::::;::;;;;;;;;;;;;;;:;;;;;,,,;;,,,,,;;;;;;;;,,;;;;;,,,;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;,;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
::::::::::;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;::;;;;,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
:::;;;;;;;;;:;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;:::::::;;;:::::::;;;;;;;,;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;:::::;;;;;;;;;;,,,,,;;;;;;;;;;;;;,,;;;;;;;,,,;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;;;;;;;;;:;;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;,;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:cc:::::::::::cllllccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;::;;;;;;;,;;;;,,,;;;;;;;;;,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;:::::::::cllllllcccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;,,,;;,,,;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,;;;;;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;,,,,;;;;;,,,,,;;,;;,,,;,,,,,,,,;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::;::::c::;;;;;;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,;;,,,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;;:::;;;;;;;;;;;:::c::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;;::::;;;;;::;;:::::::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''',,,,,'',,,,,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''',,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;,,,;;;;;;;;;;;;;;;;;;;;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''',,'''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''',,'''''''''''''''''''''''''''''''''''''''.'....
:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;:;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''..................'
;;;;;;,,,;;;,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,;;;,;;;;,,,;,,,,,,,,,,,,;;;;;;,,,,,;;,,,,,,,,,;;,,,,,,,,,''''',,'''',,,,,,,''','''''''''''''''''''''''''........................
;,,;;;,,;;;,,,;;;;;;:c;,,,,,,,,,,;;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,,,;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''',''''',''''''''''''''''''.........................
o:;:::cllccclddxxkkkkkO0d0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOdoooooollllllllooooollloolooooddddddooodoooooooooooodddddddddooooooddddoooooollccc:;;,,';,',;;,;;,;;,,,,,'',,,''''........'',,;''''',,,,,,,,,,
d::ldxxkxkOO00K000KKXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkkddxkkkxddxxkkkkkoxOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkddddxkkkkddkkOkxddddkOkkdodxxxdc;::coddc,:oxxoc;,,lddddoc:lo;,,;:c;;loooc;,,,;:ccc:;,,,
OO00KKXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxoc:okddxc:ddccc:odcddclxo::cdo:cxllkkkkocodxOOOkddxxdxxclodkkodkoxkdxkdc;:dkkxxOkdkOkocdOkc:dkOOkxxddddxxxddlcc
XXXXXXXXXXXXXXXXXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldo;'cdxocolclxlcoc,,;dl;ll'.cc..':c''c;.,oc'.'lc',o:,::cdl,,;:cllxxlclddl:::lxoclkddkkOOxc:,dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KK0KOxo
XXXXXXXXXXNXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOkkxolxoclllddodc;oxdc::lc;:o;c:,:dol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:;,,okoccccoOxxOOxkOllOkKKKKKKKKKKKKKK00O
KXXXXXXXXXK0K00OOOOOOOOOOOOOOOkkOOOOOOOkkOOOOOOOOOOOOOOkOxo:c:;;;;;cc;;,',ccc:;,,;::;,,'';ccc:,.,;;,',;::;,..',,......,;,'..''''......',,..,;;;'.....,;,...'''......'.....':;;::;::;:dk0000KKKl;;;:llkOO
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOkOOOOOOOOOOOOOOl;;.. ..',,,'....'''''''''''.'.''''........................................................................................;ccclllooooodccloxx
OOOOOOOOOOOOOOOOOOOOOkkOkkkkkkkkkkkkkkkkOOOOOOOO0000000000oc:,,,;;::;:;,,'.....'',,,'''...'''''......................................................................................,;;;,,,,;''',,;;;;;
OOkkOOOOOOOOOOOOOOOOOOOOOOOOOOOkkko..',:kkkkkkkkkkOOOkOOOOOOxxkxxxxxxxxxxdl:;'..';;:c::::;,'.....,,;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000O00OOOOOkkkkl     ''ckxoxkkkkkkkkkkkkkkxxxxdddddddxxxxxdoc;,''',;:cllcc,.;;;;;;;;;;;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkko'..       ...  ..,kkkkxcokkkkxxxxxxxxxddxxxxxxxxxxdoc;,'.',;;:,:::;'...',;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKK0KKK000000000OOOOOOOOkkkd'             ,,,,;;cxkd,okkkkkxxxxxxxxdddddddddddddddddolc:;,,',,;::,.  .;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,;.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkxc:'.      ....'dkldkkkkkxxkkkkkkxxxxxxxxxdddddddooollooooooddddolc:;,'.'';;;;';;;;;;;;;;,,,,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxkkk,   .'kkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoolllllllooodddddddooc::,,''',,,;;::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkl    .kkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;::::::;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkd;:c:clllldddol;  'lokkkkkkkkkxocclokkkkkkkkkkxxxxxxxxxxxxxxxxxxxxdooooodddddddooddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkl .  .'';clllll:.:xkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkddddkkkkkkkkkkkkkOOOOOOOOOOO0000l,':O000OOkkkkkkkkkkkkkkkkOOOOOOOOOkxxddddddooooooolc:clcllllllllllllc:;''..',;,,,,,,,,,,,,,,,;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkOOOOOOkkxxxxxkO0000000KKKK000000000Okk00OOkkkkkkkkkkkxxkkkkOOOO0KKKK0Okxxxdddddddddddddoooolollllccccllllllc;,,;,,,,,,,,,,,,,,,,;,.;;,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO00kdkodl::,,....;dcKKKKKKKKKKKK0O0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxddddddxxxxdddoooolllc:xOkxxdolcc:;;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,''''''''
OOOOOOOOO000OxxkkK0xkkkkO0OOkdkX0KKKKKKKo.cxl,.:ok0OO000OOOkkkkkkkkkkkkkkkkOOO000000OOkkkkkkkkkkkkxxxdxxddddddoooooollc;,:kK00O00KKOxkxc;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,''''''''
0Oxddk00kkK0kXXXXXXXXXXXXXXXXKOXKKKKKKKKd;lxloOkk0OOOOOOOOkkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllc,..,cx0KKKXXXKO0K0dolc:::;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,,''',''''''''''''''''''
xdldkK00KK00KXo:o0XXXXXXXKKKKKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOO00000000Okkkkkxxxxxkkkkkkkxxxxxxxxxddddooooooc,'.',coOKXXXXXKOdxOkxdddddoll::;,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNN0::oXXXXXXXKKKKKKKK000OOOOkkkkkkkkkkkkkkkkkOOOkOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxx;'..',,ckKXXXXXKk:oKX0xddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNXKNNXXXXXKKK0000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxx:'....',o0XXXXXKkk0XXX0xdooooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxdd;......'cxKXKKKKKKKXXXX0xxxxxddddxxxxxxxxxxdoc;;,,,,,,;;;;;,,,;;,,,,,,''''''''''''''
XXXXXKKKK000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxdlc:'.......'c0XXKK00KKXXXXX0Okxxxxxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxocc:;,.......'cOKKKkdx0KXXXXXXXX0Oxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,',,,,,,,,,,''''''''
KKKK00000OOOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddddddddddddddddddddddddddddoollolcc::,'......'lk00kldkKXXXXXXNNNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdoooooooooooooooooooooooolc:;;;;lkkkkxoll:..'c;,:do:okKXXKKKXXNNNNXXOxxxxxxxxdddxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOOkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooo:,,,,,,,okkkkkxxxkd;,ox,...'ckKXXKKKXNNNNNNXOddddddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllooooolllc;,;,''';:::::c;;cc,''......:xKXK0KKXNNNNNNNOddddddoooooooooooooooooooooooooooddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOkkxxxdoolllllll:'':lxOo;''''''''..............,okOOO0KXNNNNNNXkooooooooooooooooooollllllllllllllloooooooddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollll,.',ckO:''''....................';ldOKXNNNNNNNXxooolllllllllllllllllllllllllccccclllllllllooooolllc::
xxxxxxxxxxxxxxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxxxxkkkkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxdool,.;ddOOl'''......................'lx0XXNNNNNNNXxooollllllllllllllllllllcccccccccccccccccclllllccccc::
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdl,.':dOk:'''.....................,cxOKXXNNNNNNNKdoolllllllllllllllllllllccccccccccccccccccccccccccc:;;
ddddddddddddddddddxxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0000O000000kdl,..',lOd:,'....................,cxOKXXNNNNNNNN0olllllllllllccllllllcccccccccccccc:::::ccc::cccccccccc
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO000000000000000ko;....,d0x:,'..................';lxOKXXXNNNNNNNKdllllcccccccccccccccccccccccccccccc::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOOO0000000000Oo;''.'okl;,''...''............',:ok0XXXNNNNNNNXOllccccccccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOO000000000klc:;cl:;,,,;llol;''.........',,:okKXXXNNNNNNN0ollccccccccccccccccccccccccccccccccc::::::::::::::::::::
xkkkOOOOOOOOOOO0000000000000000000000000OOOOkkkkkkkkkkkkkkkxxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000000OOocc::;:ok0000d;,''.......';:coxOKXXNNNNNNNNXkolccccc::::::::::ccccccccccccccc::;:cccccc:c::c::::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOkOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0000000K000OdoooxOKK0KK0d;,''.......,clodOKXXNNNNNNNNNNXklccccc:::::::::::ccccc::cccccc::::ccccccc::::c::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000000000KKKKKK0o;,'''......,codk0KXXXXXKKKK0000xlccccc:::::::::::ccc:::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkOOOOOOOOOOOOOOOOOO0000000KKKKK0KK0d;,''''....'coddxkOOOOOOkkxddollcccccccccc:::::::ccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0000000KKk:,''''...;loddl::cclolllllcccc:::::cccc:ccc:::cccccccccc::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOx:,''''..ckkxdc.....',;:cccc::::;::::::::::::cccccccccccc::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxc,''''..,lkk;........',,,,,,,;;;:::::::::::::ccccc::::::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkl,,'''....,,.........''''''',,;;;::::::::::cccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000KK0000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOOOOOxl;,''....................'',;;;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkkdc;''....................,:::::::::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO00000000000OOOOOOkkxddolll:'..................',:locc::::::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOO000000000000OOkkxxdolllllllc;..............',;;:loxxlc::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKXKKXXXXXXXXKKKKKXXXKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddolccccccccccccc:,...........'':loodxkOOxc:::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKXKKXXXXKKKKKKKKKXXXKKKKKKKXXXXKKKKKKKKKK0000000000000000000OOOOOOOOOOOkxxddollcccccccc::::::::cccccc;..........'',lxkOOOOkxl::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKXKKKKXXKKKKKKKKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc::::::ccccc::::::::::::cll'........'',;:oddxxxdoc::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKXXKXXKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccccc:::::::::::::::::::::::::c:;.....'''',,;ccllodddc::::::::::::::;;;::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXXXXXXKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxdolcccc::ccccccccc::::::::::::::::::::::::;........',,,,,,,,,,;:ll:::::::::::;;;;;;;::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKXXXXXXXKKKKKKKKXXXXXKKKKKKKKKKKKKKKXXKKKKKKKK00OOxddollcc::::::::::::::cccc::::::::::::::::::::::::'.......',;;;,........,:::;;;::;;;;;;;;;;;;:::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllccccc:::::::::::::::::::::::::::::::::::::::::::........;::::'........,;;;;;;;;;;;;;;;;;;;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxxxddddddoooooooooollooddxxkOKKKKKKKKKKKKKKKK00Okxddollllllllllccc::::::::::::::::::::::::::::::::::::::::::::,.......,:::::'........,;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::ccccclok00KKKK0OOkxdooollccclllllllllcccc::::::::::::::::::::::::::::::::::::::::::::,.......,;;;;;;.........,;;;;;;;;;;;;;;;;;;;;;;;:::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::cccccccloxxdolllllllllccccccccllllccccc:::::::::::::::::::ccc::::::::::::::::::::::,......';;;;;;;,.........,;;;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::cccccccccclcccccclllccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::::::,......;;;;;;;;;;,........,;;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;:;;;;;'.....,;;;;;,;;;;;;,......',;;;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::ccccccccccccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;......,;;;,,,,;;;;;;'......',,;;,,,,;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
::ccc:::::cccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::;;;;;;;;;;:::::;;;;;;;;,,;;;;,,,,,.........,,,,,,,,,;;;,,......',;;;,,,,,,,;;;;;;;;;;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,
::cccccccccccccccccccccccccccccccccccccccccccccccclllllccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,''.............',,,,,,,,,,,,,,'.....',,,,,,,,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc:ccllllcc::::::::::::::::::::;;;;;;,,,,,,,,,,,,,,,,,'''................',,,,,,,,,,,,,,,,'......',,,,,;;;;;;;;:;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::cccc::::::ccccccccccccccccccccccccccccccc:::cllllcc:::::::::::::::::::;:;;;;;,,'',,,,,,,,,,,,,'................'',,,'''',,,,,,,'''........',,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::c:::::::::::c:cccccccccccccccccccccccccc::cllllccc::::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............'',,,,,,,,,,,,,,,,,''...........'',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::cc:cccccccccccccccc::::ccccccccclllcccc:::::::::::cc:::::;;;;,,,;,,''''''',,;;;,,''.......''',,,,,,,;;;;,,,,,;;;,,'.............'',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccccloolccc:::::::::::::::::::;;;;;;;;,,''',,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;,,,''.............''',,,,;,;;;;;;,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccclloolcc::::c:::::::::::::::::;;;:::;;;;;;;:::::::;;;;;;;;;;;;;;;;;,,,,;;,;,,,;;;,,,,,''''.............',,,;;;;,,,;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccclllllllcclllooolccc:ccccc::::::cccc:::ccc::,,,;::ccc::::c::;;;;;;;;,,,,,,,;;,,,,,,;;;;;;;;;,,,,,,,,,,,'............',,;;;,,,,;;;;;;;,,,,;;,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::cccccccccccccccccccccllllllccclllloolcccccccccccclllllccc:::cc:;,,,,;;::::;::::;;;;;;;;,,,,,,,,;;,,,,,;;;;;;;;;;,,,,;;;,,,,,,''........',;;;;;,,,,,,,;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccccccccclllllllcclllloooolllllllllllllllccc:::::::;;;;;;;;;;;::::;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;,,,,'''',,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc;;::::::ccccc:cccclllllllllllllllllcllllllllllcccc:::::::::::::::;;;;;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;,,;;:;;;;;;;;;;;;,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
:::::::::::::::::::::::cccclllollllllllllllllllllllccc:::::::::::::;;;:::::;;::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::clllllllcllllllllccccccccc::::;;;;;;;;;;:::::;;;;;;::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;,,,;;;;;;,;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc:::cccllllcllcc:::::::;;;;;;;;;:::::::::;::::::::::::::::;;:;;;;;;;;;;;;;;:;;;;;,,,;;,,,,,;;;;;;;;,,;;;;;,,,;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;,;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
::::::::::;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;::;;;;,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
:::;;;;;;;;;:;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;:::::::;;;;::::::;;;;;;;,;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;,,,,,;;;;;;;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cc:::::::::::cclcccccccllc:::;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;,;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:cc:::::::::::cllllccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;::;;;;;;;,;;;;,,,;;;;;;;;;,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;:::::::::cllllllcccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;,,,;;,,,;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,;;;;;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;,,,,;;;;;,,,,,;;,;;,,,;,,,,,,,,;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::;::::c::;;;;;;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,;;,,,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;;:::;;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;;::::;;;;;::;;:::::::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''',,,,,'''',,,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;,;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;,,,;;;;;;;;;;;;;;;;;;;;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''',,'''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''',''''''''''''''''''''''''''''''''''''''''.'....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;:;;;;,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''..................'
;;;;;;,,,;;;,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,;;;,;;;;,,,;,,,,,,,,,,,,;;;;;;,,,,,;;,,,,,,,,,;;,,,,,,,,,''''',,''',,,,,,,,''','''''''''''''''''''''''''........................
;,,;;;,,;;;,,,;;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,,,;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''',''''',''''''''''''''''''.........................
xl::::cclllllddxxkkkkkO0d0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOdoooooollllllllooooollloooooooddddddooodoooooooooooodddddddddooooooddddoooooollccc:;:;;;;;;;;;;;;;:;;;,,,'',,,''''........'',,;,;;;;,,,,,,,,,,
xc:oxxxkxkOO00K000KKXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOkkkkddxkkkxddxxkkkkkoxOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkddddxkkkkddkkOkxddddkOkkdodxxxdlcccloddl:coxxoc:::lddddoc:lo;,,;:c;;looolccccccccc:;,,,
OO00KKXKKXXXNNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkoxkdxkdc::dkkxxOkdkOkocdOkc:dkOOkxxddddxxxddlcc
XXXXXXXXXXXXXXXXXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clxoclkddkkOOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KK0KOxo
XXXXXXXXXXNXXXXKKKKK000000OOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOkkxcldoclolldodc:oxdlc:lc::o:lc,cdol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:;,;okoccccoOxxOOxkOllOkKKKKKKKKKKKKKK00O
XXXXXXXXXXKKK00OOOOOOOOOOOOOOOkkOOkxOOOkkOOOOOOOOOOOOOOOOxocc:;;;:cc:;;,',::c::,,;::;,,,';ccc:,.,;;,',;::;,..',,......,;,'..''''......',,..,;;;'.....,;,...'''......'.....':;;::;::;:dk0000KKKl;;;:llkOO
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxcOOOooOOOOOOOOOOOOxc:;.. ..',,,'....'''''''''''.'.''''........................................................................................;ccclllooddddccloxx
OOOOOOOOOOOOOOOOOOOOOkkOOkkkkkkkkkkkkxxoOOOOOOOO000000000kl:c;;;;:::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOkOOOOOkkxkxxxxxxxxxxdl:;'..';:cccccc:::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxdddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxxxxxxxdoc;,'.',;;::ccc::::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKK0KKK000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdddddddddddddddddolc:;;,',,;::;::::;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddddddooollooooooddddolc:;,'.',;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoolllllllooodddddddooc::,,',,;;;::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;::::::;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxdooooodddddddooddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkxokkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000K0KKKK00OOOkkkkkkkkkkkkkkkkOOOOOOOOOkxxdddddoooooooolc:clcllllllllllllc:;,'''',;,,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOO000000000000KKKK00000000000000OOkkkkkkkkkkkxxkkkkOOOO0KK0K0Okxxxdddddddddddddooooloolllcccccdxddolc:::;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXKXXXXXXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkxxxxxddddddxxxxdddooolc,:kK000000OOxxoc;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,''''''''
OOOOOOOOOO00KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOkkkkkkkkkkkkxxxxxxddddddoooooc,'.,ck0K0KXXXKOOKOdc:;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,''''''''
0000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkOOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllll;..',:dOKXXXXXK0dk00kxdlcc::;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,,''',''''''''''''''''''
KXXXXXNNNXNNNNNNNXXXXXXXXKKKKKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkOOOO00O00000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddooodc'..',;lkKXXXXXXO:ck00xddddddoolc:;,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNXXXXXXXKKKKKKKK000OOOOkkkkkkkkkkkkkkkkkOOOkOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxl'..''';x0XXXXXXk:o0XX0xdddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxc......'lkKXKKKX00KXXXXOxddooooollodxxxddlc:;;,'',,,;;;,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdol;.......,lOXXKKKK0KKXXXX0kxxxxxddddxxxxxxxxxxdoc;;,,,,,;;;;;;,,,;;,,,,,,''''''''''''''
XXXXXKKKK000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxol::,........;xKKK0kk0KKXXXXXX0kxxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxdocc:;;,'......,ok0KOoox0KXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK00000OOOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxddddddddddddddddddddddddddddddoc:;,;,,,'';;...'',cxxclk0KXXXKXXNNNNXKOxxxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooolcc;,,,'''''''lkl.;xo'';,,lxKXXKKKXXNNNNNXKkxxxxxxxxxdddxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOOkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooool;,,,,''....',';c:,'''.....:dKKK0KKXNNNNNNN0xxxxxdddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllooooolll:,;;''......''...'........;d00000KXNNNNNNNKxddddddddddooooooooooooooooooooooooddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOkkxxxdoolllllll:',:ckd;'....................';codk0KXNNNNNNN0ddddoooooooooooooooooooolllllllllllloooooooddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollll,.';lOc''......................':dO0XNNNNNNNN0dooooollllllllllllllllllllllllccccclllllllllooooolllc::
xxxxxxxxxxxxxxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxxxxkkkkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoool,,okko,''.....................',cx0KXNNNNNNNN0oollllllllllllllllllllllllccccccccccccccccclllllccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdl,..,c;.........................':xOKXXNNNNNNNXkollllllllllllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0000O00000ko;.............................'':dOKXXNNNNNNNNOllllllllllllllccllllllcccccccccccccc:::::ccc::cccccccccc
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO00000000000000Oo,.....,:,....................',:ok0KXXNNNNNNNNklllccccccccccccccccccccccccccccccccc::::::::::cc::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOOO0000000000d:;,...'''''',,;,............',:dk0XXXNNNNNNNN0olccccccccccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOO00000000Okkl;'''',cdkkxo;,''.......',;cdO0KXXXNNNNNNNX0dllcccccccccccccccccccccccccccccccccc::::::::::::::::::::
xkkkOOOOOOOOOOO0000000000000000000000000OOOOkkkkkkkkkkkkkkxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000000Okdlcclx00000Oc,,''.....';:dkkOKXXNNNNNNNNNNNKklccccc:::::::::::ccccccccccccccc::;:cccccc::::c::::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000000OOO000KKKKO:,,''.....';ldkO0KXNNNNNNXXXNNNNXxlccccc:::::::::::ccccc::cccccc::::ccccccc:::cc::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000K000KKKKKKKk:,,'''....,:ldk0KXXXNNXXX00000000xcccccc:::::::::::ccc:::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkOOOOOOOOOOOOOOOOOO0000000KKKKKKKk:,,'''....,codxkO00000Okxdollllllcccccccccc:::::::ccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000k:,,,''...;oddo:::::::::;,,,,;:::::::ccccc:ccc:::cccccccccc::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOkOOo;,,,''..;kkkd;...............,;;;:::::::::::::cccccccccccc::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOx;;,,,'...'lkkc................';;;::::::::::::::ccccc::::::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOd;;,,''.....''................';cll:;::::::::::cccccc:::::::::::::::::::::::::::::::::::::
OOOOOO0000000KK0000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOxo;;,,'.....................';:codddl::::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOOxlc;,,,'.................''',;cloddddo::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000000000OOOOOOkxoc:,,,'...........',;;,'',,,,;cllddddoc::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKK000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkxxdooodoc:,,,..........',;;;;,'''',,,:ooodxkkc:::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKXKKXXXXXXXXKKKKKXXXKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddolcccccclllc:;,,.........',;::::,'''',,,:xOOO00Ol:::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKXKKXXXXKKKKKKKKKXXXKKKKKKKXXXXKKKKKKKKKK0000000000000000000OOOOOOOOOOOkxxddollcccccccc::::cccccc:;,'.........,;:::::,',,,,,,;:x000Okl:::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKXKKKKXXKKKKKKKKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc::::::ccccc::::;,',;:;;,'....'''',;::::::;,,,,,,,;;:lddddo:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKXXXXXXXXXXKKXXXKKKKKKKKKKKKKKKXXKXXKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccccc:::::::::::::::;.......,,,,....',;;;:::::::;;;;;;;;;::clool:::::;:::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXXKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxdolcccc::ccccccccc:::::::::::::::'.......::;;....';;;::::::::;;;;;;;,''''''';;::;;;;::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKXXKKKKKKKKKKKKXXXXXXKKKKKKKKKKKKKKKXXKKKKKKKK00OOxddollcc::::::::::::::cccc:::::::::::::::'.......::;;,...,;:::::::::::;;;;;;,.......,;:;;;;;;:::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllccc::::::::::::::::::::::::::::::::::::,.......,::;,..,::::::;;;;;;;;;;;;;;.......';;;;;;;;;;:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
dddddoooooooooooooooooddxkOKKKKKKKKKKKKKKKKKKK00Okxddollllllllllccc:::::::::::::::::::::::::::::::::::::,.......,::;';;;:::::;;;;;;;;;;;;;;........;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cloxOKKKKKKKKK0OOkxdooollccclllllllllcccc:::::::::::::::::::::::::::::::::::::::'......';;;;;;;;;;;;;;;;;;;;;;;;;;'.......;;;;;;;;;;;:::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cccccodxkOkkxdllllllllllccccccccllllccccc:::::::::::::::::::ccc:::::::::::::::::;......';;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::cccccccccllllcccccclllccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::;......;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:::::::;.....',;;;;;;;;;;;;;;;;;;;;;;;;,......';;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::ccccccccccccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;'......',;;;;,,,;;;;;;;;;;;;;;,,......,;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
::clllc:::cccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::;;;;;;;;;;:::::;;;;;;;;,,;;;;;,,,..........,,,,,,,;;;,,;;;;;;;;,......',,,,;;;;;;;;;;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::ccccccccccccccccccccccccccccccccccccccccccccccllllllccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,''............',,,,,,,,,,,,,,,,,,'......',,,,,,;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::ccccccccccccccccccccccccccccccccccccccc::cllllcc::::::::::::::::::::;;;;;;,,,,,,,,,,,,,,,,,'''................',,,,,,,,,,,,,,,,'........',,,;;;;;;;;:;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccccccccccccc::::clllcc::::::::::::::::::::;:;;;;;,,'',,,,,,,,,,,,,'.................',,,'''',,,,,,,'''.........,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::c:ccccccccccccccccccccccccccc:cllllccc::::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............''',,,,,,,,,,,,,,,,''...........',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::cc:cccccccccccccccc::::ccccccccclolcccc:::::::::::cc:::::;;;;,,,;,,''''''',,;;;,,''.......''',,,,,,,;;;;,,,,,;;;,,'.............'',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccccloolccc:::::::::::::::::::;;;;;;;;,,''',,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;,,,'..............'',,,,,;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccccccccccccccloollcc::::c:::::::::::::::::;;;;::;;;;;;;;::::::;;;;;;;;;;;;;;;;;,,,,;;,;,,,;;;,,,,,''''.............',,,;;;;,,,;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccccllllllcclllooolccc:ccccc::::::cccc:::ccc::,,,;::ccc::::c::;;;;;;;;,,,,,,,;;,,,,,,;;;;;;;;;,,,,,,,,,,,'............,,,;;;,,,,;;;;;;;,,,,;;,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::cccccccccccccccccccccllllllccclllloolcccccccccccclllllccc::ccc:;,,,,;;::::;::::;;;;;;;;,,,,,,,,;;,,,,,;;;;;;;;;;,,,,;;;,,,,,,''........',;;;;;,,,,,,,;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccccccccccllllllcclllloooolllllllllllllllccc:::::::;;;;;;;;;;;::::;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;;,,,,'''',,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::cc;;::::::ccccc:ccccllllllllllllllollclllllllllccccc:::::::::::::::;;;;;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;,,;;:;;;;;;;;;;;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
:::::::::::::::::::::::cccclllollllllllllllllclllllccc:::::::::::::;;;:::::;;::::;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;;;;;;;;;;;;;,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::clllllllcllllllllccccccccc::::;;;;;;;;;;:::::;;;;;;::::::;;;;;;;;::;;;;;;;;;;;;;;,,;;;,,,;;;;;;,;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc:::cccllllcllcc:::::::;;;;;;;;;:::::::::;::::::::::::::::;;;;;;;;;;;;;;;;;:;;;;;,,,;;,,,,,;;;;;;;;,,;;;;;,,,;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,''''''
:::::::::::::::::::::::::::::::::::ccclcccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;,;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''
::::::::::;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;::;;;;,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
:::;;;;;;;;;:;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;:::::::;;;;::::::;;;;;;;,;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;,;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:cc:::::::::::cllllccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;::;;;;;;;,;;;;,,,;;;;;;;;;,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;:::::::::cllllllcccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;,,,;;,,,;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,;;;;;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;,,,,;;;;;,,,,,;;,;;,,,;,,,,,,,,;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::;::::c::;;;;;;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,;;,,,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc:;;;::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,',,,,''',,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;;::::;;;;;::;;:::::::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''',,,,,'''',,,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;,;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;,,,;;;;;;;;;;;;;;;;;;;;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''',,'''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''',,'''''''''''''''''''''''''''''''''''''''.'....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,,,,;;;;;:;;;;,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''..................'
;;;;;;,,,;;;,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,;;;,,,,,,;;;;,,,,,,,;;,,,,,;;;,;;;;,,,;,,,,,,,,,,,,;;;;;;,,,,,;;,,,,,,,,,;;,,,,,,,,,''''',,''',,,,,,,,''','''''''''''''''''''''''''........................
;,,;;;,,;;;,,,;;;;;;:c;,,,,,,,,,,;;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,,,;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''',''''',''''''''''''''''''.........................
xc::::cclclllddxxkkkkkO0d0KXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOdoooooollllllllooooollloooooooddddddooodoooooooooooodddddddddooooooddddoooooollccc:;:;;;;;;;;;;;;;:;;;,,,'',,,''''........'',,;,;;;;,,,,,,,,,,
xc:oxxxkxkOOO0K000KKXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOkkkkddxkkkxddxxkkkkkoxOkkkoodxkkkkkxdxkkkddxkkOxoxkOOkddddxkkkkddkkOkxddddkOkkdodxxxdlcccloddl:coxxoc:::lddddoc:lo;,,;:c;;looolccccccccc:;,,,
OO00KKXKKXXXXNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkoxkdxkdc::dkkxxOkdkOkocdOkc:dkOOkxxddddxxxddlcc
XXXXXXXXXXXXXXXXXXXXXXKKKK000000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clxoclkddkkOOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KK0KOxo
XXXXXXXXXXNXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOkkxolxoclolddodc:oxdlc:lc::o:lc,cdol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:;,;okoccccoOxxOOxkOllOkKKKKKKKKKKKKKK00O
KXXXXXXXXXKKK00OOOOOOOOOOOOOOOkkOOkxOOOkkOOOOOOOOOOOOOOkOxoclc:;;:clc;;,',ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......,;,'..''''......',,..,;;;'.....,;,...'''......'.....':;;::;::;:dk0000KKKl;;;:llkOO
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOkOOOOOOOOOOOOOOo:;.. ..',,,'....'''''''''''.'.''''........................................................................................;ccclllooddddccloxx
OOOOOOOOOOOOOOOOOOOOOkOOOkkkkkkkkkkkkkkkOOOOOOOO0000000000dcc;;;;:::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOkOOOOOOkxkxxxxxxxxxxdl:;'..';:cccccc:::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000O00OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxdddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxxxxxxxdoc;,'.',;;::ccc::::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKK00KK00000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdddddddddddddddddolc:;;,',,;::;::::;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddddddooollooooooddddolc:;,'.',;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoolllllllooodddddddooc::,,',,;;;::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,'''',;::::::;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxdooooodddddddooddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000K0KKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddooooooooolc:clcllllllllllllc:;,'''',;,,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOO000000000000KKKK00000000000000OOkkkkkkkkkkkxxkkkkOOOO0KK00OOkxxxddddoodddddddoooolollllcccc:dxddol::::;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXKXXXXXXKKKKKKKKKKKKKKK0000000OOOOkkkkkkkkkkkkxxxxkkkOOO00000OOkkkkkkkkxxxxxddddddxxxxdddooolc,;OK00000OOkxxoc;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKOO0XXXKKxxO000OOOkkkkkkkkkkkkkkkkOOO000000OOkkkkkkkkkkkkkxxdxxddddddooooo:,'.,cx0K0KXXXKOO0Odc:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,''''''''
0000KKKKKKXXXXXXXXXXXXXXXXXXXXKXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkOOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllll,..',:dk0xO0XXK0dk00kddlc:::;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,,''',''''''''''''''''''
KXXXXXNNNNNNNNKooOXXXXXXXKKKK0OKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkOOOO00O00000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddooodc'..',;lxK0; l0kk:ck00xddddddollc:,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNN0::oXXXXXXXKKKKKKKK00OOOOOkkkkkkkkkkkkkkkkkOOOkOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxl'..''';d0ddlOOOk:o0XX0xdddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxc......'lxllKKKX00K0xKXOxdddoooollodxxxddlc:;;,'',,,,,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOkkkOOOOOOOOOOO00OOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdll;.......,lOxKKKKK0KKXXXXOkxxxxxddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,;,,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0OOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxol::,........;x0KK0kk0KKXXXXXX0kxxxxxxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOOkkOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxkxxxddddddddddddxxxxxxxxxxxxxxxxxxdocc:;;,'......,ok0KOoox0KXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,',,,,,,,,,,''''''''
KKKK00000OOOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddddddddddddddddoc:;,,,,,'';;...'',cxxclkOOOXXKXXNNNNX0Oxxxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOO000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooolcc;,,,'''''''lkl.;ko'';,,lxl.xKKKXXNNNNNXKkxxxxxxxxxdddxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOOkOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdooooooooooooooooool:,,,,''.....'';c:,'''.....:x0O00KKXNNNNNNN0xxxxxdddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllloooolll:,,;''......'...''........;d00000KXNNNNNNNKxdddddddddoooooooooooooooooooooooooddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOOOOOOOkkxxdoolllllll:',:cxd;'....................';lodk0KXNNNNNNN0ddddoooooooooooooooooooolllllllllllloooooooddddlc:;,'''
kkkxxkkxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOkxddollll,.',lOc''......................':dO0XNNNNNNNN0doooooolllllllllllllllllllllllccccclllllllllooooolllc::
xxxxxxxxxxxxxxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxxxxkkkkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoool,'okko,''.....................',cx0KXNNNNNNNN0oollllllllllllllllllllllllccccccccccccccccclllllccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkol,..,c;.........................':xOKKXNNNNNNNXklllllllllllllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO00000000000ko;.............................'':dOKXXNNNNNNNNOlllllllllllllllcccccclccccccccccccc::::::ccc::ccc:::cccc
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkkxxxxxxxxxxkkkkOOOOO0000000000000kl,.....,:,'...................',:ok0KXXNNNNNNNNkllccccccccccccccccccccccccccccccccc:::::::::::cc::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOO0000000000Oo:;,...'''''',,;,............',:dk0XXXNNNNNNNX0ollcccccccccccccccccccccccccccccccccc:::::cc:::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOO00000000Okxl;'''',cdkkxo;,''.......',;cdO0KXXXNNNNNNNX0dllcccccccccccccccccccccccccccccc::cc:::::cc:::::::::::::
xkkkOOOOOOOOOO00000000000000000000000000OOOOOOkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000000Okdlcclx00000Oc,'''.....';cdkkOx0XNNNNNNNNNNXKklcccccc:::::::::ccccccccccccccc::c:::::::c::::c::::::::
kkkkOOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000000OOO00KKKKKO:,,''.....';ldkO0KXNNNNNNXXXNNNNXxlccccc::::::::::cccccc::cccccc::::::::::c::::c::::::::
kkkkkkOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOO00000000000000KKKKKKk:,''''....,:ldk0OXXXNNKXX00000000xcccccc:::::::::::cccc:::ccc:::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkOOOOOOOOOOOOOOOOOO0000000KKKKKKKk:,''''....,codxkO00000Okxdollllllccccccccc:cc:::::ccccc:::ccc:::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOO0O00000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000k;,,'''...;oddo:;:::::::;,,,,;:::::::cccccc:cccccccccc:::::ccc:::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkOOOo;,,,''..:kkkd;...............,;;;:::::::::::::cccccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkOx;,,,,'...'lkk:................';:::::::::::::::ccccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOx;,,,''.....''................';cll:;:::::::::ccccc:::c:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOOOkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOOOOOxo;,,,'.....................';:codddl::::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000O00O0OOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOxlc;,,''.................''',;cloddddo::::::::::ccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO00000000000OOOOOOkkxoc:,,,'...........',;;,''',,,;clloddxoc::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkOOOOOOOOOOOO000000000000OOxxxdooodoc:,,,..........',;;;;,'''''',:ooodkOkc:::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKXXXXKXXXXXXXKKKKKKXXXXXXKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddolcccccclllc:;,,.........',;::::,'''''',:xOO000Ol:::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKXKKKKKXKKKKKKXXXXXXKKKKKKKXXXXKKKKKKKKKK00000000000000000000OOOOOOOOOOkxxddollcccccccc::::cccccc:;,'.........,;:::::,''',,,,;:x000Okl:::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKXXKKKKKXKKKKKKXXXKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKK00000000000000OOOOkxdoolcccc::::::ccccc::::;,',;;;,,'....'''',;;:::::;,,,,,,,;;:lddddo:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKXXXXKKKXXXKKKKKKKKKKKKXXXXXKXXKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccccc:::::::::::::::;.......,,,,....',;;;:::::::;,,,;;;;;::clool:::::;:::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxdolcccc::ccccccccc:::::::::::::::'.......::;;....';;;::::::::;;;;;;;,''''''';;::;;;;::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKK00Okxxdollcc::::::::::::::cccc:::::::::::::::'.......;:;;,...,;:::::::::::;::;;;,.......,;:;;;;;;:::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKK00KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllcc:::::::::::::::::::::::::::::::::::::,.......,::;,..;::::::::::::;;;;;;;;.......';;;;;;;;;;:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
dddddoooooooooooooooooodxkOKKKKKKKKKKKKKKKKKKK00Okxddollllllllllccc:::::::::::::::::::::::::::::::::::::,.......,::;';;;::::::;;;;;;;;;;;;;........;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cldxOKKKKKKKKK0OOkxdooollccclllllllllccccc::::::::::::::::::::::::::::::::::::::'......';;;;;;;;;;;;;;;;;;;;;;;;;;'.......;;;;;;;;;;;:::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cccccodxOOOkddllllllllllccccccccllllcccccc::::::::::::::::::ccc:::::::::::::::::;......';;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::ccccccccclllllccccclllccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::;......;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:::::::;.....',;;;;;;;;;;;;;;;;;;;;;;;;,......';;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::ccccccccccccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;'......',;;;;,,,;;;;;;;;;;;;;;,,......,;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
::clllc:::cccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::;;;;;;;;;;:::::;;;;;;;;,,;;;;;,,,..........,,,,,,,;;;,,;;;,,,,,,......',,,,;;;;;;;;;;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,
:::ccccccccccccccccccccccccccccccccccccccccccccccllllllccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,''.............',,,,,,,,,,,,,,,,,,'......',,,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc::cllllcc:::::::::::::::::::::;;;;;,,,,,,,,,,,,,,,,,,''................',,,,,,,,,,,,,,,,'........',,,;;;;;;;;:;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccccccccccccc::::clllcc::::::::::::::::::::;;;;;;;,,'',,,,,,,,,,,,,'.................',,,'''',,,,,,,'''.........,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::c:cccccccccccccccccccccccccc::cllllccc::::::::::ccc::::::;;;,,,;,,'''''''',,,,,,''............'',,,,,,,,,,,,,,,,,''...........',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::cc:cccccccccccccccc::::ccccccccclllcccc:::::::::::cc:::::;;;;,,,;,,'''''',,,,;,,,''.......''',,,,,,,;;;;,,,,,;;;,,'.............'',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccccloolcc:::;:::::::::::::::;;;;;;;;;,'''',,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,;;,,,,,,;;,,,'..............'',,,,,;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccccccccccccccloollcc::::c::::::::::::::::::;;;::;;;;;;;;::::::;;;;;;;;;;;;;;;;;,,,,;;,;,,,;;;;;,,,''''.............',,,;;;;,,,;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccccllllllcclllooolccc:ccccc:::::::::::::ccc::,,,;::ccc::::c::;;;;;;;;,,,,,,,;;,,,,,,;;;;;;;;;;,,,,,,,,,,'............,,,;;;,,,,;;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::cccccccccccccccccccccllllllccclllloolcccccccccccllllllccc::ccc:;,,,,;;::::;::::;;;;;;;;,,,,,,,,;;,,,,,;;;;;;;;;;,,,,,;;,,,,,,''........',,;;;;,,,,,,,;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccllllllcclllloooolllllllllllcllccc::::::::;;;;;;;;;;;;:::;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;;;;;;,,,,,;;,;;;;,,,,,''',,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::ccc:;::::::ccccc::cccllllllllllllllollclllllllllccccc:::::::::::::::;;;;;;;;;;;;::;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,
::::::::::::::::::::::::ccclloolllllllllllllcclllllccc:::;;::::::::;;;:::::;;:::;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcccllllllcccccccccc::::;;;;;;;;;;;::::;;;;;;::::::;;;;;;;;::;;;;;;;;;;;;;;;,;;;,,,;;;;;;,;;;;;;;;,,;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::cccccc:::cccllllcllcc:::::::;;;;;;;;;:::::::::;::::::::::::::::;;;;;;;;;;;;;;;;;:;;;;;,,,;;,,,,,;;;;;;;;,,;;;;;,,;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,''''''
::::::::;::::::::::::::::::::::::::ccclccccc::::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;,;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
:::::::;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;:::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;::;;;;,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::;:::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;:::::::;;;;::::::;;;;;;;,,;;,,,;;;;;;;;,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;:::::;;;;;;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;::cc:;;;;;:::;;;;;;;;;,,;;;;;,;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::cllllcccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;::;;;;;;;,;;;,,,,;;;;;;;;;,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;::::::::::cllllllcccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;,;;,;;;;;,,;;;;,,,;;,,,;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,;;;;;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;:;:::::::::;;,,,,;;;;;::::clc:::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;,,,,;;;;;,,,,,;;,;;,,,;,,,,,,,,;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::;::::c:;;;;;;;;;;::::c::::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,;;;;;,,,,,;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;;:::;;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;,,;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;,;;;;:::::::;;;;;;:::::;;;;;:;;;:::::;;;;;;;;;;;;,,,;,;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,''''''''''''''''''''''''''''''''...
:::;;:;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;,,,;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''',''''''''',,,,,''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''','',,'''''','''''''''''''''''''''''''''''''''''...
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''','',,'''''''''''''''''''''''''''''''''''''''.''...
;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;,,,;;;,,,,,,,;;;;:;;;;,,,,;;;;;,,;,;,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....
,;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,'',,,,,,,,,,'''''''''''''''''''''''''''''.'''''''''''''''''''''''''''..'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;::;;;,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,;,,,,,,,;;;;;;;,;;;;;;,,,,,,,,,,,,,,,,,,,,,'',,,'''''''',,,,'''''''''''''''''''''''''''''''''''''''............'
;,;;;;,,,;;;,,;;;;;;;;;,,,,,,,,,,;;;;;,,,,,,,;;;;,,,,,;;;;,,,,,,,;;,,,,,,;;,;;;;,,;;,,,,,;,,,,,,;;;;;;,,,,,;;,,,,,,,,;;,,,,,,,,,,''''',,'''',,',,,,''''''''''''''''''''''''''''........''...............
,,,,,;,,;;;,,,;;;;;;;c;,,,,,,,,,,,;;;;,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;;,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;,,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........'...............
kc;::c:cllclooxxxkkkOOO0KXKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXXkoooooolllllllloooooolloooooooooooodddddoooooooooooddddddddddddoooooooooooooolcccc:::;;;;;;;;;;;;;;;,,,,,'''''''''.........,;;;,,;;;,;;;;;;,,,
x::lxxkkkkO000KKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOkkkkddkOkkxddxxkkOOkoxOOOkoodxkkkkkxdxkkkxdxkkkxoxOOOkddddxkkkkddkOOkxdoodkkOkdldxxxdcc:cldddl:coxxoc:::cddddoc;lo:,,;oc,;lolllcccccccc::;;,,
OO0KKXXXXXXNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKOddkOx0OkkxodkxdookOoxOxdolldxollokddxl:ddclc:dxlddclko::cdo:cxllkkkxooddxOOkkddxxdxxclodkkodkdxkddOxc::dkxxxOkdk0kocdOk:cxOOOOkxddddxxxddlcc
XXXXXNNNNNXNXXXXXXXXXXXKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOOxccdklooodxlddc:cdxoclocoxlcdc;:cdo;lo'.cc..'cc,'c:.,oc'''lc.,o:,::cdl;,,;cllxxlcldxo::clkdclOddOkOOkc:cdOkkkkxdOOOxxkOOoo0KKKKKKKkkOKKKKKOxo
XXXXXNNNNNNXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxooxocoolddodc:okxl::ll::o:lc,:doc:,;l:;c;'coc;'.:l;:l,'''cl;:l,,:;;l:'''';;;lc;cdo:;'','cl:cl;:occoc;,;lkocccclkxxOkdkOol0KKKKKKKKKKKKKKK00O
XXXXKXXXXXKKK000OOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOOkocllc:::clc:;,',ccc::,,;::;,;,';ccc:,.,;;,',;:::,..',,......';,'..',,'......,,'..,;;;,.....,;,...','......'.....';;;::;::;:x00000KKKKKKKKKKKKK
00OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOo:;;;;;;;,,,'....'''''''''''''''...........................................................................................;cccllooodddkOOOOO0
OOOOOOOOOOOOOOOOOOOOOkkOkkkkkkkkkkkkkkkkkOOOOOO00000000000dlccc:::::;;;,,'....'',,,,'''''''...''''...................................................................................,;;;;;;;;;;;;;:::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOkkxxxxxxxdxddxdoc,'..';:clcccc:::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
kkkkOOOOOOOOOOOOOOO000O00OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxdddddddxxxxxdlc;,''',:ccllcc::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
000000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc:,'.',;::cccc:::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,
00KKKKKKKK000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddddddddddolc:;,,,,,;:::;:;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOO0000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddooooooollloooodddddolc:;,'.',;::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddooolllllloooddddddddolc;,,'',;;:::::;;,,,;;;,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkkkOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddooolloooddddddddddddol:;,'''',;::c::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoodoooddddolc:;,'''',;;;::::;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxdddddoooolllllllllooooooollc:;,,'.'',,;,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKK00OOOkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddooooooooolc:clccllllllllllddlc:;,''',,,;,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKK000000000000OOOkkkkkkkkkkkkkkkkkOOOO0KKK0Okkxxxddddooooooodddoollollllc:::ck00000Oxdolc:;;,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXXXXKXXXKKKKKKKKKKKKKKK0000000OOOOkkkkkkkkkkkkxxxxkkkOOO00000Okkkkkkkkkkxxxxdddddxxxxxddddo:'..,l0KKKKXXXKkkkl;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOO00KKKXXXXXXXXXXXXXXXXXKKKKKKKKKKKXXXKXKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxxddddddddool'.',;ckKKXXXXXKOOKKxl:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,''''''''
00000KKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK00OOOOOOOkkkkkkkkkkkkOOOOOO0000KK000Okkkkkkkkkkxxkxxxdddddoolllllll;..',,:d0KXXXXXKxcd00kdolc:::;,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,'''''''''''','''''''''
KXXXXXXXXXNNNNNNNXXXXXXXKKKKKKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkOOOO00000000000OOkkkxxxxxxxkkxxkkxxxxxxxxxxxddoodo;...'',lOKXXKXXKo;o0X0xddddddoocc;,,'',,,,,,,,,,,,,,,,,,'',,,,,,''',,,,,',,,,'''''''''
NNNNNNNNNNNNNNNNNNXXXXXXKKKKKKKK0000OOOOkkkkkkkkkkkkkkkOOOOOOOOOOO00000000000OOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxd;......:d0XK0KKKkk0XXX0xdddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNXXXXXXKKK0000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdo,......':kKKXXK000KXXXXOxddooooollodxxxdolc:;,,',,,,,;,,,,,,,,,,;;;,,,,,,'''''''''''''
NNXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOO00OOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdocc,.......,dOKXK0kO0KKXXNXKOkxxxxxddxxxxxxxxxxxdoc;,,,,,,;;;;;;;;,;;,,,,,,,''''''..'''''
XXXXKKKKK000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkkxxxxxxkkkkkkkkkkkkkkkxxxxxxxxdlc:;;,......'lxO0KOdok0KXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOkkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxdddddddddddxxxxxxxxxxxxxxxxdoc;,,,,'':l,.',,,;lkdcok0KXXXXXXNNNNKOkxxxxxxxxxxxxxxxxxxxxxxxdoolc;,,,,,,,,,,,,,,,,,'''''''''
KKKK000000OOOOOOOOO000000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddddddddddddddol:,''''''..:kl.,dkc'',,:d0XXXKKKXNNNNNXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOO00O0OOO00OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxdoooooooooooooooooooooo:;,,''.....,,';,'',:,....'oOXKKKKXXNNNNNNXKkxxxxxxxxxxddddddddddddddxxxxxxxddoc:;,''''',,'''''''''
OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdooooooooooooooooool;,,''......''...''........lOK0000KXNNNNNNX0xxxddddddddddddddddddddddddddddddddxxxdoc:,'.''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollllooool;:ccol;'....................:okkxkOKXNNNNNNN0dddddddddddooooooooooooooooooooooooodddddddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxxxdoolllllll:..'ckc'.....................'';ldO0XNNNNNNNNOdooooooooooooooooooolllllllllllllllloloooooddddlc:;,'''
kkxxxkkxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOkxdoollll,'cdkx;''.....................',lk0XXNNNNNNNXOooooooolllllllllllllllllllllllcccccllllllllloooooollc::
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOxolll''cxo,.......................'':x0KXNNNNNNNNXxllllllllllllllllllllllllllccccccccccccccccccccclccccccc
xxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxol,..''........................',cdOKXXNNNNNNNXkollllllllllllllllllllllllccccccccccccccccccccccccccccccc
ddddddddddddddddddxxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOO000000xl,.....';'....................',:dk0XXXNNNNNNNXxllccccllllllllllllllllcccccccccccccc:::::cccccccccc:::::
dddddddddddxxxxxkkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkkxxxxxxxxxkkkkkOOOOOO000000000000xc'.....;;''''................',;ok0KXXNNNNNNNNXxllccccccccccccccccccccccccccccccccccc:::::::::ccc:::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxxxxkxxxxxxxxxxxkkkkkkkkOOOOOOO0000000000Oo:;,...''''''''.............';:ok0KXXNNNNNNNNN0ollcccccccccccccccccccccccccccccccccc:::::cc::::c::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOO0000000OOkxl,''',,cdxxc,'''........';oxk0KXXXNNNNNNNNN0dllcccccccccccccccccccccccccccccc:ccc::::::c:::::::::::::
xkkkOOOOOOOOOO00000000000000000000000000OOOOOOkkkkkkkkxkkkxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000000Okolcclx000k:,''''......';cxOO0KXNNNNNNNNNNNXKklcccccc:::::::::ccccccccccccccc:c:,::::::c::::c::::::::
kkkkOOOOOOOOOOOOOOO0000000000000000000000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOO000000000000OOO00KK0k;,''''''....';ldk0KKXNNNNNNXNNNNNNXxlccccc::::::::::cccccc::ccccc:::::::::::c::::c::::::::
kkkkkkOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOO00000000000000KKK0x;,''''''....,:odk0KXXXNXXXK00000000xcccccc:::::::::::cccc:::cc::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOOO00000000KKK0d;,''''''...':ldddxxkO00Okdolllllllcccccccccccc::::::ccccc:::::::::::::::::::::::::::::::::
xxxxxxxkkkkkkOOOOOOOOOOO00000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0000o,,'''''...'oxdoc'''',;;;,,'''',::::::::cccccc::cccccccc:::::::::::::::::::::::::::::::::::
dddddddxxxxkkkkkOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkc,,'''.....:OOOd'...............';;;::::::::::::::ccccccccccc::::::::::::::::::::::::::::::
dxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkOOkl,,,'''......;ll,................';ccc:::::::::::::cccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOkd:,,,''..........................',coool:::::::::::ccc:::c:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOOOkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOkdl;,,,''.......................',::loddddl::::::::cccc::::::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK00000000000000OOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOkol:;,;,,''.........'',;;;,,,,,,,;:cclodddxxl:::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOO000000000000OOOOkxoc::::;,,........',;;;;;;;;:::::::::cloddkOo::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000OOOOOOOOOOOOOOOOOOOkkkOOOOOOOOOOO0000000000000OOkkxoolc:::::;,......',;;::::::::::cccccccccloxOOdc::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKXXXXKXXXXXXXKKKKKKXXXXXXKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddolllccccc::::;;'....',;;:::::::::::::cccllloxxkO0Oxdc::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;
KKKKKKKKKKKKKKXKKKKKXKKKKKKXXXXXXKKKKKKKXXXXKKKKKKKKKK00000000000000000000OOOOOOOOOOkxxdoolllcccccc:,,,;;::::::;;'...',;;;:::::::::::::;;;:ccoOOOOOddxl:::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKXXKKKKKXKKKKKKXXXKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKK00000000000000OOOkkxdoollccc::::::::::;.......;:::;;'....,;;;:::::::::::::,''',,,:ldxddddo:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKXXXXKKKXXXKKKKKKKKKKKKXXKXXKXXKKKKKKKKKKKKKKKKKKKK000Oxddoolccccccccc::::::::::'.......,:::;;;....,;;;;::::::::::::;;;,,,,;;;::::cc:::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxddllcccc:cccccccc::::::::::::,.......';;;;;;....,;::::::::::::;;;;;;;;;;;,''....';:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKXXKKKKKKKK00OOkxdollcc:::::::::::ccccccc::::::::::::,.......';;;;;...,;:::::;:::::::;;;;;;;:;;;,.......,::;:::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddoolllcc:::::::::::::::::::::::::::::::::::'........;;;;'.,;::::::;:::::;;;;;;;;;;;;;,.......';;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxxxxdddddddddddddxxxkkO0KKKKKKKKKKKKKKKKKKKKK00Okxddoolllllllllccc::::::::::::::::::::::::::::::::::;,.......,::;;;;;;::;;;;;;;;;;;;;;;;;;;;;;,.......';::;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::cloxO0KKKKKKKKKK0OOkxddoolllcclcllllllllccc:::::::::::::::::::::::::::::::::::::;.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,.......;;;;;;;::::::::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::ccclldO000Okxxdlllllllllllcccccccccllcccc:::::::::::::::::::::::::::::::::::::::;......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'.......;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::ccccccllllllllccclllccccccccccccccccccc:::::c:::::::::::::::::::::::::;;;:::::::,......;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;'.......,;;;;;;;::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccc:::c:::::c:::::::::::::::::::;::::::;;;::::::;,......';;;;;;;;;;;;;;;;;;;;;;;;;;;,......',,,,;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::c:::::::::::::cccccccccccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;'.......',;,,;,,,;;;;;;;;;;;;;;;;;'......,,,,,;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
xxxddooc::cccccccccccccccccccccccccccccccccccccccccllllcccc::::::::::::::::;;;;;;;;;;;::::;;;;;;;;,,;;;;,,,..........',,,,,,,;;;,,,,,,,,,,,,.......,,,,,;;;;;;;;::::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
oooooolc:ccccccccccccccccccccccccccccccccccccccccclllllccc:::::::::::::::::;;;;;;;;;;;,;;;;;;;;,,,,,,,,,''............,,,,,,,,,,,,,,,,,,,'.......',,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
cc::::c::ccccccccccccccccccccccccccccccccccccc:ccllllcc::::::::::::::::::::;;;;;;,,,,,,,,,,,,,,,,,,''................',,,,,,,,,,,,,,,,,..........,,;;;;;;;;;;:;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccccccccccccc:::clllcc::::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'.................'',,,'',,,,,,,,'''..........,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccccccccccccc::cllllccc::::::::::cccc:::::;;;,,,;,,'''''''',,,,,,''............''',,,,,,,,,,,,,,,,'''...........,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
::::::::::::::::cc:ccccccccccccccccccccccccccccclolcccc:::::::::::cc:::::;;;;,,,;,,''''''',,,,,,,''.......'',,,,,,,,;,,;;,,,,;;;,,''............'',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccccllolcc:::;:::::::::::::::;;;;;;;;;,'''',,,,,;;;;;,,,,'',,,,,,,,,,,,,,,;;,,,,,,;;;,,''............'',,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccc:ccccccccccccccccccccccccccclloolc:::::cc:::::::::::::::;;;;;::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,,,;;,;,,,;;;;;,,,'''..............',,,;;;;,,,;;;;;;;,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::ccccccccccccccccccccccclllcccllclooooc:::::ccc::::::::::::::::::,,,;:::cc:::::::;;;;;;;;,,,,,,,;;,,,,,,;;;;;;;;;;,,,,,,,,,,'............',,;;;,,,,,;;;;;;,,,,,;,,,,,,,,,,,,,,,,,,,,,,''''''
:::::::::::::ccccccccccccccccccccclllllcccclcloooocccccccccccclllllccc::::::;,'',;;::::;;::;;;;;;;,,,,,,,,,,;;,,,,,;;;;;;;;;;;,,,,,,,,,,,,''........',;;;;;,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccclllllcllllloooollllllllllccllccc::::::::;;;;;;;;;;;;::;;;;;;;;,,,,,,,,,,,;;;,,,,;;;;;;;;;;;,,,,,,,,;;;,,,,,,'''',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::cc;;::::::cccccc:cccllllllllcclllllllcllllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;::;;;:;;;;;;;;;;;;,,;;;;;;;,,,;;;:;;;;;,,,,;;;;;;;;;;;,;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::::ccclloolllllllllllllcclllllcc:::::;:;;;;:::;;;;;;;;;;:::;;;;;;;;::;;;;;;;;;;;;;;;,,;;;;;;;,,,,;;;;;,;;;;,,,;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,'
::::::::::::::::::::::::cllllllccclllllllccccccccc:::::;;;;;;;;;::::;;;;;;;;;::::;;;;;;;;:;;;;;;;;;;;;;;;;,;;;,,,,;,,;,,;,,,;;;;,,,;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::ccccc:::::ccllllclcc:::::::;;;;;;;;;;:::::::::;;;:;;;::::::;;:;;;;;;;;;;;;;;;;,;:;;;;;,,,;;,,,,,;;;;;;;,,,,;;;,,,,;;;,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,''''''''
::::::::;;;;;;;::::::::::::::::::::cccllcccc::::::;;;;;;;;;;;:::::::::;;:::;;;;::::;::::::;;;;;,,;;;;;,,;;;;;;;;;;;,,,,',,;;;;;;,,;,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::::;;;;;;;;;;;;;;:;;;::::::::::ccccccc::::;;;;;;;;;;;;;;;::::::;;::;;:;;;;;;;;:;;::::;;;;;:;;;:;;;;;;;;;;;,,;;;;,,,,,,,,;;;;::;;,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:;;;:::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;::::;;:;;;;;,,;;;,,,,;;;;,,,,;,,;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;::;:::::::::::::cccccccccllc:::::;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;;:::;;;;;;;;;;;;,,,,;;;;;;;,,,;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;::cc:;;;;;;:;;;;;;;;;;,,,;;;,,;;;;;,,,;;,,,,,,;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::cllllcccccccc:::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;:,;;;;;;;;;;,,,,,;;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;::::::::::clollllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;,;;;;;;;;,,,;;;,,,;;,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;:;;;;,,;;;;::lllllcccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,,,,;,,,;,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;:::;::::;;,,,,;;;;;::::clc:::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,;,;;,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;:;;;::::::;;:::::;;;;::;;;;:::::::::::cc:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;:;;;;;,,;;;,,,,,,;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''....
;;;;::cccc;;;;:::;;;;;;;;;;;::cc::;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;::;;;;;;;;;;;;;;;;,,;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,,,,''''''''''''''''''''''''''''''.....
;;;;::c:::;;,;;;;;;;;,,;;;::::::;;;;;;;;;;::;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''',,,,''''''''''''''''''''''''''''''.....
::;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;:;;;;;;;;;,,,;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''','''''''''',,,,''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;,,;;;;;;;,,,;,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''','',,'''''',,''''''''''''''''''''''''''''''''''...
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''','',,,'''''''''''''''''''''''''''''''''''''.......
;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;,,,,;,,,,,,,,,,;;;;;;,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''.....
;;;:;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,;::;;:;;;,,,,,;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,'',,,,,,,,,,'''''''''''''''''''''''''''''.''''''''''''''.''''.''''''''''
;;;;;;,,,,,;;;;;;;;;;;;,,;;;;;;;;;:;;,,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;,,;;;;:;,,,,,,,,,,,,,,,,,,,,,'',,,''''''''',,,'''''''''''''''''''''''''''''''''''''''.............
;,;;;;,,,;;;,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;,,,,,,,,;;,,,,,,,;,,,,,,,;,,,,,,,,;;,,,',,,,,,,,;;;;;;,,,,,;;,,,,,,,,,,,,,,'',,,,''''',,'''',,'',,,''''''''''''''''''''''''''''........'''..............
,,,,,,,,;;;,,,,;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,;;;,,,'',,'''',,'.'''''''''''''''''''''''''',,''''''''''''.........'...............
kl:::ccllllllddxkkkkOOO0KXKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXKkoooooollllllllooooollloooooooddddddooodoooooooooooddddddddddooooooddddoooooollccc::::;;;;;;;;;;;;:;;;,,,'',,'''''........',;;;,;;;;;;,,,,,,,,
xc:oxxxkkkOO00K0KKKKXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOkkkkddxkkkxddxxkkkkkoxOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkddddxkkkkddkkOkxddddkOkkdodxxxdlcccloddl:coxxoc:::ldddddc:lo;,,;ol;;looolccccccccc:;,,,
OO00KXXXXXXXNNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkoxkdxkdc::dkkxxOkdkOkocdOkc:xOOOOkxddddxxxddlcc
XXXXXXXXXXXXXXXXXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocooclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddl::clxoclkddkkOOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KKKKOxo
XXXXXXXXXXNXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxooxdcoolddodc:oxdlc:lc::o:lc,cdol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:;,;okoccccoOxxOOxkOllOKKKKKKKKKKKKKKK00O
XXXXXXXXXXKKK00OOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOOkoclll::cllc;;,',ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......,;,'..''''......',,..,;;;'.....,;,...'''......'.....':;;::;::;:dO0000KKKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOo:;;;;;;;;,,'....'''''''''''.'.''''........................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOkkOOOOOkkkkkkkkkkkkOOOOOOOO0000000000dlcccc::::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOkOOOOOOkkkxxxxxxxxxxdo:;'..';:cccccc:::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000O00OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxdddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxxxxxxxdoc;,'.',;;::ccc::::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKK0KKK00000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddddddddddddddddolc:;;,',,;::;::::;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddoooollooooooddddolc:;,'.',;::::;;;;;;;,;;,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddoolllllllooodddddddoocc:;,',,;;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,'''',;::::::;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxdooooodddddddooddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000K0KKKK00OOOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddooooooooolc:clcllllllllllllc:;,'''',;,,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOO000000000000KKKK00000000000000OOkkkkkkkkkkkkkkkkkOOOO0KK00OOkxxxddddoodddddddoooolollllcccccdxddol::::;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXXXXXXXXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO00000OOkkkkkkkkxxxxxddddddxxxxdddooolc,:OK00000OOkxxoc;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXXXXKKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOkkkkkkkkkkkkxxxdxdddddddoooooc,'.,ck0K0KXXXKOO0Odc:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,''''''''
0000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkOOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllll;..',:dOKXXXXXK0dk00kddlc:::;,,,,,,,,,,,,,,,,,,,,,,,,''''''',,,''',''''''''''''''''''
KXXXXXNNNNNNNNNNNXXXXXXXXKKKKKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkOOOO00O00000000Okkkkkxxxxxkkkkkkkxxxxxxxxxxdddooodc'..',;lkKXXXXXXO:ck00xddddddollc:,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNXXXXXXXKKKKKKKK000OOOOkkkkkkkkkkkkkkkkkOOOkOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxl'..''';x0XXXXXXk:o0XX0xdddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxc......'lkKXKKKX00KXXXXOxdddoooollodxxxddlc:;,,'',,,,,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdol;.......,lOXXKKKK0KKXXXXOkxxxxxddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,;,,,,,,,'''''''.''''''
XXXXXKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxolc:,........;xKKK0kk0KKXXXXXX0kxxxxxxxxxxxxxxxxxxxxxdolc:;,,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOkkkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxdocc:;;,'......,ok0KOoox0KXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,',,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxddddddddddddddddddddddddddddddoc:;,,,,,'';;...',,cxxclk0KXXXKXXNNNNXKOxxxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOO000000OOOOOOOOOOOkkkkkOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooolcc;,,,'''''..ckl.;xo'';,,lxKXXKKKXXNNNNNXKkxxxxxxxxxdddxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOOkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooool:,,,,''.....'';c:,'''.....:xKKK0KKXNNNNNNN0xxxxxdddddddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllloooolll:,,;''......'....'........;d00000KXNNNNNNNKxdddddddddoooooooooooooooooooooooooddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkxxxdoolllllll:',:cxd;'....................';lodk0KXNNNNNNN0ddddoooooooooooooooooooolllllllllllooooooooddddlc:;,'''
kkkxxkkxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollll,.',lOc''......................':dO0XNNNNNNNN0doooooolllllllllllllllllllllllllllllllllllllooooolllc::
xxxxxxxxxxxxxxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxxxxxxkkkOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoool,'okko,''.....................',cx0KXNNNNNNNN0oollllllllllllllllllllllllccccccccccccccccclllllccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkol,..,c;.........................':xOKXXNNNNNNNXklllllllllllllllllllllllllcccccccccccccccccccccccccccccc
ddddddddddddddddddxxxkkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO0000O00000ko;.............................'':dOKXXNNNNNNNNOlllllllllllllcccccccclcccccccccccccc:::::ccc::ccc:::cccc
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkkxxxxxxxxxxkkkkOOOOO0000000000000kl,.....,:,'...................',:ok0KXXNNNNNNNNkllcccccccccccccccccccccccccccccccccc::::::::::cc::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOOO000000000Oo:;,...'''''',,;,............',:dk0XXXNNNNNNNX0olccccccccccccccccccccccccccccccccccc:::::cc:::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOO00000000Okxl;'''',cdkkko;,''.......',;cdO0KXXXNNNNNNNX0dlccccccccccccccccccccccccccccccc::cc:::::cc:::::::::::::
xkkkOOOOOOOOOOO00000000O0000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000K00Okdlcclx00000kc,''......';cdkkOKXXXNNNNNNNNNXKklcccccc:::::::::ccccccccccccccc::c:::::::c::::c::::::::
kkkkOOOOOOOOOOOOOOO0000000000K000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000000OOO0000KKKO:,,''.....';ldkO0KXNNNNNNXXXNNNNXxlcccc:::::::::::cccccc::cccccc::::::::::c::::c::::::::
kkkkkOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000000KKKKKKk:,''''....,:ldk0KXXXNNXXX00000000xcccccc:::::::::::cccc:::cc::::::::::::::::::::::::::::
kkkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOkkOkkkkkkkOOOOOOOOOOOOOOOOO0000000K0KKKK0k:,''''....,codxkO00000Okxdollllllccccccccccc::::::ccccc:::cc::::::::::::::::::::::::::::
ddddxxxkkkOOOOOOOOOOO0OO00000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000x;,',''...;oddo:;:::::::;,,,,;:::::::ccccccc::cccccccc:::::::::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkOOo;,,,''..:kkkd;...............,;:::::::::::::::cccccccccccc::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkx;,,,,'...'lkk:................';;:::::::::::::::cccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOd;,,,''.....''................';cll::::::::::::cccc:::::::::::::::::::::::::::::::::::::::
OOOOO00000000KK0000000000000OOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOOOOOxo;,,,'.....................';:codddl::::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK00000000OO000OOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkOOOOOOOOOOOOOOkxlc;,,''.................''',;cllddddo::::::::::ccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000000000OOOOOkkxoc:,,,'...........',;;,'',,,,;clloddxoc::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOO000000000000OOxxxdooodoc:,,,..........',;;;;,'''''',:ooodxOkc:::::::::::::::::::::::::::::::::::::::::::::::::;;;;
KKKKKKKKKXKKKKXXXXXXKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKK000000000000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddolcccccclllc:;,,.........',;::::,'''''',:xOO000Ol:::::::::::::::::::::::::::::::::::::::::::;;;;;:;;;;
KKKKKKKKKKKKKKXKKKKKKKKKKKKKXXXXXKKKKKKKXXXXXKKKKKKKKK00000000000000000000OOOOOOOOOOkxxddollcccccccc::::cccccc:;,'........',;:::::,''',,,,;:x000Okl:::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKKKKKKKXXXXXKKKKKKKKKKKKXXXKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKK00000000000000OOOOkxdoolcccc::::::ccccc::::;,',;;;,,'....'''',;::::::;,,,,,,,;;:lddddo:::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKXXKXXKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc::::::::::::::::;.......,,,,....',;;;:::::::;;;,;;;;;::clool:::::;:::::::::::::::::::::::::;;;;;:;;;;;;;;;;;;;;;;
KKKKKKKKXXKKXXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKK00Okxdolcccc::ccccccccc:::::::::::::::'.......::;;....';;;::::::::;;;;;;;,''''''';;::;;;;::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKXXKKKXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKXXKKKKKKKK00Okxddollcc::::::::::::::ccccc::::::::::::::'.......;:;;,...,;:::::::::::;;;;;;,.......,;;;;;;;;::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllcc:::::::::::::::::::::::::::::::::::::,.......,::;,..;:::::::::::;;;;;;;;;.......';;;;;;;;;;:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
dddddoooooooooooooooooodxkOKKKKKKKKKKKKKKKKKKK00Okxddollllllllllccc:::::::::::::::::::::::::::::::::::::,.......,::;';;;::::::;;;;;;;;;;;;;........;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cldxOKKKKKKKKK0OOkxdooollccclllllllllccccc::::::::::::::::::::::::::::::::::::::'......';;;;;;;;;;;;;;;;;;;;;;;;;;'.......;;;;;;;;;;;:::::::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cccccodxOOOkddllllllllllccccccccllllcccccc::::::::::::::::::ccc:::::::::::::::::;......';;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cccccccccclllllccccclllccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::;......;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:::::::;.....',;;;;;;;;;;;;;;;;;;;;;;;;,......';;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::ccccccccccccccccccccccccccccccccccccccccccccc::::::::::::::::::::;;::::::::;;;;;;;;;;;;;;;;;;'......',;;;;,,,;;;;;;;;;;;;;;,,......,;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::clllc:::cccccccccccccccccccccccccccccccccccccccclllllcccc::::::::::::::::;;;;;;;;;;;::::;;;;;;;;,,;;;;;,,,..........,,,,,,,;;;,,;;;,,,,,,......',,,,,,;;;;;;;;::::::;;;;;;;;;;,,,,;,,;;,,,,,,,,,,,,,,,
:::ccccccccccccccccccccccccccccccccccccccccccccccclllllccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,''.............',,,,,,,,,,,,,,,,,,'......',,,,,,;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc::cllllcc::::::::::::::::::::;;;;;;,,,,,,,,,,,,,,,,,,''................',,,,,,,,,,,,,,,,,........',,,;;;;;;;;;:::;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccccccccccccccccccccccccccccc::::clllcc::::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'.................',,,'''',,,,,,,'''.........,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::::::::::::::c:cccccccccccccccccccccccccc::cllllccc::::::::::ccc::::::;;;,,,;,,'''''''',,,,,,''............'',,,,,,,,,,,,,,,,,''...........',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
c:::::::::::::::cc:cccccccccccccccc::::ccccccccclllcccc::::::::::::c:::::;;;;,,,;,,''''''',,,;;,,''.......''',,,,,,,;;;;,,,,,;;;,,'.............'',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccccloolcc:::;:::::::::::::::;;;;;;;;;,,''',,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,'..............'',,,,,;,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccccccccccccccloollcc::::c:::::::::::::::::;;;;::;;;;;;;;::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;;;,,,,''''.............',,,,;;;,,,;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccccllllllcclllooolccc:cccccc:::::cc:::::ccc::,,,;::ccc::::c::;;;;;;;;,,,,,,,;;,,,,,,;;;;;;;;;,,,,,,,,,,,'............,,,;;;,,,,,;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::cccccccccccccccccccccllllllccclllloolcccccccccccclllllccc::ccc:;,,,,;;::::;;:::;;;;;;;;,,,,,,,,;,,,,,,;;;;;;;;;;,,,,,,,,,,,,,''........',,;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
::::::::::::::::::::ccccccccccccccllllllcclllloooolllllllllclllllcc::::::::;;;;;;;;;;;;::;;;;;;;;;;;;,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,;,,;;;;,,,,,'''',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,
::::::::cc;;::::::ccccc:ccccllllllllllllllollclllllllllccccc:::::::::;;;;;;;;;;;;;;;;;;::;;;:;;;;;;;;;;;;;,,;;;;;;,;;;;;:;;;;;,,,,;;;;;;;;;;;,;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
:::::::::::::::::::::::cccclllollllllllllllllclllllcc::::;;::::::::;;;;;:::;;:::;;;;;;;::::;;;;;;;;;;;;;;;,;;;;;;;,,,,;;;;;;;;;;,;,;;;;;;;;;;;;;,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,','''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllcccllllllcccccccccc::::;;;;;;;;;;;:::;;;;:::::::::;;;;;;;:::;;;;;;;;;;;;;;,,;;;,,,;;;,;,,;;,;;;;;,,;;;;;;,;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc::::cccllccllcc::::::;;;;;;;;;;:::::::::;::::::::::::::::;;;;;;;;;;;;;;;;;:;;;;;,,,;;,,,,,;;;;;;;;,,;;;;;,,,;;;,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,''''''''
:::::::::::::::::::::::::::::::::::cccllcccc::::::;;;;;;;;;;;:::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,',;;;;;;;;;;;;,;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::::;;;:;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;;::::;:::::::::;;;;:::::::::::;:::;;;;;;;;;;;;;;;;,;;;;;,,,,,;;;;;;::;;,,,;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;::::::;;;;::::::;;;;;;;,,;;;,,;;;;;;,,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;:::::::::::::cccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;:::::;;;;;;;;;;;,,,,;;;;;;,,,,;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;;::;;;;;;;;;,,;;;;;,;;;;;;;,,;;;,,,,;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::cllllcccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;,,,,,;::;;;;;;;,;;;,,,,,,;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::cllllllcccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;:;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;,,;;;,,,,;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,;,,,;,,;;;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,,;,,;;,,,,,,,,,;,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::;::::c::;;;;:;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;::;;;;;;;;;,,,,,,;;,,,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;;;;;::;:::;;;;;;;;;;;;,,;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;:;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;,,;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,,,,,;;;;:;;;,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''..................'
;,;;;;,,,;;;,,;;;;;;;;;,,,,,,,,,,;;;;;,,,,,,,,;;,,,,,,;;;;,,,,,,,;;,,,,,,;;,,;;;,,,;,,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,''',,,,,,,,'''''''''''''''''''''''''''''........................
;,,,,,,;;;;,,,,;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,,,;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''',,'''''''''''''''''.........................
kc;::ccllllcloxxkkkkkOOOxXKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXKxoooooollllllllooooollloolooooddodddooodoooooooooooodddddddddooooooodddoooooollccc;:::;;;;;;;;;;;;:;;;,,,''','''''........',,;;,;;;;;,,,,,,,,,
xc:oxxxkxkOO00K0K0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddxkkkxddxxkkkkxodOkkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkxddkkOOxddddkOkkdodxxxdlcccloddl:coxxoc:::ldddddc:lo;,,;cc;;loollccccccccc:;,,,
OO00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookdxOxxkdc::dkkxxOkdkOkocdOkc:xOOOkkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKK00000O0OOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkdclkddkkkOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KKKKOxo
XXXXXXXXNXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxolxdclolddodc:oxxlc:lc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:,,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK00O
KXXXXXXXXXK0K00OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOOOOOOOOOOOkocllc:::llc;;,,,ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......';,'..',''......,,,..,;;;'.....,;,...'''......'.....';;;::;;:;:dO0000KKKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO0o:;;;;;;;;,,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOO0000000000dccccc::::::;,,'.....'',,,''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdoc;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;,;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdxxxxxxxxxxxdoc;,'.',,;::ccc:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,',,;::;::::;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO00OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddooloooooooddddol::;,'.',;;:::;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddoolllllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;;::::;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoododddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKK00OOkkkkkkkkkkkkkkkkkkOOOOOOOOkkxdddddddooooollc:cllllllllllllllc:;,'''',;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKKK00000000000OOOkkkkkkkkkkxxkkkkOOOO0KKK0OOkxxxddddddddooodooooooollllcccccdxddolc:::;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXXXXXKXXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkkxxxkkkOOO000K0OOkkkkkkkkkxxxdddddddxxxxxxdooooc,:OK000000OOxxoc;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKXXXXXXXXXXXXNXXXXXKKKKKKKKKKKKXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxdddddddoooooc,'.,ck0K0KXXXKOO0Odc:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkOOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllll;..',:dOKXXXXXK0dk00xxdlc:::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
KXXXXNNNNNNNNNNNNNXXXXXXXKKKKKKKKK000000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddooodc'..',;lkKXXXXXXO:ck00xddddddollc:,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxc'...'';x0XXXXXXk:o0XX0xdddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXXXXXKKK0000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxdc......'lkKXKKKX00KXXXXOxddooooollodxxxddlc:;,,'',,,,,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdoo;.......,lOXXKKKK0KKXXXXOkxxxxxdddxxxxxxxxxxxdoc;;,,,,,,,,,,,,,,;,,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxolc:,.......':xKKK0kk0KKXXXXXX0kxxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxdocc:;;,'......,ok0KOoox0KXXXXXNNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxddddddddddddddddddddddddddddddoc:;,,,,,'',,...'',cxxclx0KXXXKXXNNNXXKOxxxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooolc:;,,,''''..'ckl.;xo'';,,lxKXXKKKXXNNNNNNKkxxxxxddddxddddxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdooooooooooooooooool;,,,,''....''';c:,'''.....:xKXK0KKXXNNNNNN0xxxxdddddddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllooooolll:,;;''......''............;d00000KXNNNNNNNKxdddddddddooooooooooooooooooooooooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOOOOOOOOkkxxxdoolllllll:',:lkd;'....................';codk0KXNNNNNNN0ddddooooooooooooooloooloollllllllllooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollll,.';oOc''......................':dO0XNNNNNNNNKdoooooolllllllllllllllllllllllccccclllllllllooooolllc::
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxooll,,okko,''.....................',cx0KXNNNNNNNX0ollllllllllllllllllllllllccccccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdl,..,c;.........................'cxOKXXNNNNNNNXkllllllllllllllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O00000ko;.............................'':dOKXXNNNNNNNNOlllllllllllclllllllllllccccccccccccccccccccccccccccc::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO00000000000000Ol,.....,:,'...................',:ok0KXXNNNNNNNNkllccccccccccccccccccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkOOOOOOO00000000000d:;,...'''''',,;,............',:dk0XXXNNNNNNNX0ollcccccccccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOO000000000Okkl;''',;cdxkko;,''.......',;cdO0KXXNNNNNNNNN0dllccccccccccccccccccccccccccccccc:::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOOO00000000000000000000OOOOkkkkkkkkkkkkkkkxxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000000Okdlcclx0000Kk:,,'......';cdkOOKXXNNNNNNNNNNNKklcccccc::::::::::ccccccccccccccc:c;::::::cccccc::::::::
kkkkOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOO000000KK0000OOO0000KKKO:,,''.....,;ldkO0KXXNNNNNXXXNNNNXxlccccc::::::::::cccccc::cccc:::ccc::::::cccc::::::::::
kkkkkOOOOOOOOOOOOOOO0000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000000KKKKKKk:,,''.....,:odkOKXXXXNNXXK000K000xccccccc:::::::::ccccc::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO00000000KKKKKKKk:,''''....,codxkO00000Okxdollllllcccccccccc:::::ccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOOO0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000k;,,'''...;lddo:;:::::::;,,,,;::::::::cccccc:::::cccccccccc::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOo;,,,''..;kkkd;...............,;;;::::::::::::::ccccc:ccccc::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOx;,,,,'...'lkkc................';;:;:::::::::::::ccccc:cc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOd;,,,'......'.................';cll:;:::::::::ccccc:ccc:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkOOOOOOOOOOOOOOOxo;,,,'.....................';:codddo::::::::::cccc::::::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK0K000000O00OOOOOOOOOOkOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOxlc;,,''.................'',,;cloddddoc:::::::::ccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000000000OOOOOkkxoc:,,,'...........',;;,'',,,,;cllddddoc::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKKKKKKKKKK000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkxxxoooooc:,,'..........',;;;;,'''''',:ooodxOkc:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;
KKKKKXXXXXKKKKKKKKKXXXXXXKKKKXXXXKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxddolcccccclllc:;,,.........',;::::,'''''',;xOO000Ol:::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKXXXXXKKKKKXXXKKKKKKKXXXXXKKKKKKKKK00000000000000000000OOOOOOOOOOkxxddollcccccccc:::ccccccc:;,'........',;:::::,''',,,,,:x000Okl:::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc::::::ccccc::::;,',;;;,,'....'''',;;:::::;,,,,,,,;;:lddddo:::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKXXXXXXXXXXXKKXXXKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKK000Okxddoolccccccc::::::::::::::::;.......,,,,....',;;;::::::;;,,,;;;;:::clool::::;;:::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKXXXKKKKKKKXXXKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKK00Okxdolcccc:::::ccccccc::::::::::::::'.......;:;;....';::::::::::;;;;;;;,''''''';:::;;;;;::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKXXKKXXXKKKKKKKXXXKKKKKKKKKKKKKKXXXKKKKKKKKKKK00OOkddollcc::::::::::::::cccc:::::::::::::::'.......:::;,...,;::::::::::::;;;;;,.......,;;;;;;;;::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllcc:::::::::::::::::::::::::::::::::::::,.......,:::,..;:::::;:::::;::;;;;;;.......';;;;;;;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
dddddoooooooooooooooooddxkOKKKKKKKKKKKKXKKKKKK00Okxddollllllllllccc:::::::::::::::::::::::::::::::::::::,.......,;;;';;;:::::;;;;;;;;;;;;;;........;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cloxOKKKKKKXKK0OOkxdooolllcccclllllllcccc:::::::::::::::::::::::::::::::::::::::'......,;;;;;;;;;;;;;;;;;;;;;;;;;;'.......;;;;;;;;;;;:::::::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::cccccooxOOkkxdllllllllllccccccccclllcccccc::::::::::::::::::cc::::::::::::::::::;......';;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::ccccccccclllllcccccllcccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::;......;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::cccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:::;;::;.....',;;;;;;;;;;;;;;;;;;;;;;;;,......';;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::cccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;'......',;;;;,,,;;;;;;;;;;;;;;,,......,;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::clllc:::ccccccccccccccccccccccccccccccccccccccccllllllcccc:::::::::::::::::;;;:::;;:::::;;;;;;;;,,;;;;;,,,.........',,,,,,,,;;,;;,,,,,;,,......',,,,,,;;;;;;;;:::::;;;;;;;;;;;;;,,,,,;;,,,,,,,,,,,,,,,
:::cccc:cccccccccccccccccccccccccccccccccccccccccllllllccc::::::::::::::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,'''............,,,,,,,,,,,,,,,,,,,'......',,,,,,;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc:ccllllcc:::::::::::::::::::;;;;;;;,,,,,,,,,,,,;,,,,,''................',,,,,,,,,,,,,,,,,........',,,;;;;;;;;;;:;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccc::::::ccccccccccccccccccccccccccccccc:::clllcc::::::::::::::::::::;;;;;;;,,'',,,,,,,,,,,,,'................'',,,,,,,,,,,,,,''..........,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllccc::::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............'',,,,,,,,,,,,,,,,,''...........',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc:::::::::::cc:::::;;;;,,,;,,'',,''',,,;;,,''.......''',,,,,,,;,;;,,,,,;;;,,'.............'',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc::::::::::::::::::;;;;;;;;;,,'',,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,'..............'',,,,,;,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccclloolc:::::cc:::::::::::::::::;;:::;;;;;;;:::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,'''..............',,,,;;;,,,;;;;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccc:cccccccccccccccclllllccllllooolccc:ccccccc:::ccccc::::cc::,,,;;:ccc:::::::;;;;;;;;,,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,'............,,,;;;,,,,,;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllccllllloolcccccccccccllllllccc:::cc:;,,,,;;::::;::::;;;;;;;;,,,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,,,''........',;;;;;,,,,,,;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccllllllcclllloooollllllllllccllcccc:::::::;;;;;;;;;;;;:::;;;;;;;;;;;,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,,;,;;;;;,,,'''',,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::ccccccccclllllllllllllllllllllllllllccccc:::::::::;;;;;;;;;;;;;;,;;::::;;:;;;;;;;;;,,,;,,;;;;;;,;;;;;:;;;;;,,,,;;;;;;;;;;;;;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloolllllllllllllccllllccc::::;;::::::::;;;;;:::;;:::;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;,;,;;;;;;;;;;;;,;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllllllllllllccccccccc::::;;;;;;;;;;;:::;;;;:::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;,,,;;;,;,,;;,;;;;,,,,;;;;,,;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc:::cccllllcllcc:::::::;;;;;;;;::::::::::;:::::::::::::::;;;;;;;;;;;;;;;;,;:;;;;;,,,;;,,,,,;;;;;;;;,,;;;;;,,,;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,',;;;;;;;;;;;,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,','''''''''''''''''''''''''
::::::;;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;::::;::::::::::;;;;;;;;;;;;;;;;,,;;;;,,,,,;;;;;;::;;,,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::;:::::cccccccccccc::::;;,;;;;;;;;;;;;;;;;;;;;;:;::;;;;;;;::::::;;;;:::::;;;;;;;;,,;,,,,;;;;;;,,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;,,,,,;;;;;;,,,,;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;;::;;;;;;;;;,,;;;;;;;;;;;;;,,;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;::;;;;;;;;;;;,,,,,,;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::cllllllccccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,;;;,,,,;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;:::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;,,;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,,,,;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::c::;;;;;;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,,;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;::::;;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''',,,''''''',,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;,;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;,,,,,,;;;;;;;;,,,,,;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;:;;,,,,,,,,,,,,,,,,,,,,'',,'''''''',,,,,'''''''''''''''''''''''''''''''''''................'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;,,,',,,,,,,,;;;;;;,,,,,;;,,,,,,,,,;,,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;',;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
kl:::::llccclddxkkxkkkOOoKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOxoooooollllllllooooollloolooooddodddooodoooooooooooodddddddddooooooddddoooooollccc;:::;;;;;;;;;;;;;;;,,,,''',,''''........'',;;,;;;;;,,,,,,,,,
xc:lddxkxxOOO000K0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddxkkkxddxxkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkOOOxddddkOkkdodxxxdlcccloddl:coxxoc:::coddooc:ll;,';cc,;loollccccccccc:;,,,
OO00KXXKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookdxOxxkdc::okkxxOkdkOkocdkxc:xOOOkkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOkOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkdclkddkkkOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KKKKOxo
XXXXXXXXNXXXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxxc:ddclolldodc:oxxlc:lc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:,,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK00O
KXXXXXXXXX00K00OOOOOOOOOOOOOOOkkkkkkOOOOOOOOOOOOOOOOOOkkOkoclc:;::cc;;;,,,:cc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......',,'..',''......,,,..,;;;'.....,;,...'''......'.....';;;::;;:;:dO0000k00c;;,lkOKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOkOOOOOOOOkl:'.  ..',,,'....'''''''''''''.'''''.......................................................................................;cccllloodddocllkOO
OOOOOOOOOOOOOOOOOOOOkkkkkOOOkkkkkkkkkkklxOkxxOOO000000000klc:;,,::::::;,,'.....'',,,''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxxdoc;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;,;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxddxxxxxxxxxxxdoc;,'.',,;::ccc:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO00OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollooooooddddol::;,'.',;;:::;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddooollllllooodddddddooc::;,',,;;;::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;;::::;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoododddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKK00OOkkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddoooollc:cllllllllllllllc:;'...',;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOOO000000000KKKKKKK00000000000OOOkkkkkkkkkkxxkkkkOOOO0KKK00Okxxxddddddddooodooooooollllccccllllllc;,,,,,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXXXXXKKXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkkxxxkkkOOO000K0OOOkkkkkkkkxxxdddddddxxxxxxdoooolllc:xOkxxdolccc:;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxddddddddooooollc;,:kKK0O0KKKOxkxc;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllll:,..,cx0KKKXXXKO0K0dolc:::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
KXXXXNNNNNNNNNNNNNXXXXXXXKKKKKKKKK000000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddooooooc,'.',:oOKXXXXXKOdxOkxdddddollc:,,,,,,,,,,,,,,,,,,,,''''',,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxx;'..'',cxKXXXXXKx:oKX0xddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXXXXXKKK0000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxx:'....',o0XXXXXKkx0XXX0xdooooollodxxxddlc:;,,'',,,;,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdo;......'cxKXKKKKKKKXXXX0xxxxddddxxxxxxxxxxxdoc;;,,,,,,,,,,,,,,;,,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxdlc:'.......'c0XXKK00KKXXXXX0Okxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxdocc:;,.......'lOKKKkdx0XXXXXXXXX0Oxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddoooddddddddddddddddddddddddollllc:::,'......'lk00kldkKXXXXXXNNNXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdoooooooooooooooooooooooolc:;;;;lkkkkxoll:..'c;,:dl:okKXXKKKXXNNNNNXOxxxxxxxxdddddxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdooooooooooooooooooo:;,,,,,,lkkkkkxxxkd;,od,...'lkKXXKKKXXNNNNNXkdddddddddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllooooolllc;,;,''',;;;;:c;;:c,''......:xKXK0KKXXNNNNNNOddodddoodoooooooooooooooodddooooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOOOOOOOOkkxxxdoolllllll:'':lxOo;''''''''..............;okOOO0KXNNNNNNXkoooooooooooooooolooooolllllllllllooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollll,.',cOO:''''....................':ldOKXNNNNNNNXxoooollllllllllllllllllllllllccccclllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxolll,.;ddO0l'''......................,lx0XNNNNNNNNKxoolllllllllllllllllllllccccccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdl,.':dOk:'''.....................,cxOKXNNNNNNNNKdoollllllllllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000kdl,..',lkd:,'...................',cxOKXXNNNNNNNN0ollllllllcllllllcclllccccccccccccccccccccccc:::ccc::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO000000000000000Oo;....'d0x:,'..................';lk0KXXNNNNNNNNKdllllccccccccccccccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkOOOOOOO00000000000Oo;'..'okl;,''...''............',:oOKXXXNNNNNNNXOllccccccccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOO0000000000klc:;cl:;,,,:llol;'''........',,:oOKXXXNNNNNNN0ollcccccccccccccccccccccccccccccc:::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOOO00000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000000Okoccc:;:ok0000d;,''.......';:coxOKXXNNNNNNNNXkolccccc::::::::::ccccccccccccccc:cc::::::c::::c::::::::
kkkkOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000KK000OdoooxO000KK0d;,''......',cloxOKXXNNNNNNNNNNXklccccc::::::::::cccccc::cccc:::ccc::::::::::::::::::::
kkkkkkOOOOOOOOOOOOOO0000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000000000000KKKK0o;,'''.....';lodk0KXXXXXKKKK0000xlccccccc::::::::ccccc::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO00000000KKKKKKKK0d;,''''....,coddxOOOOOOOkkxddollcccccccccc:::::ccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOOO0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000KKKKKk:,''''...;loddl:ccclolllllccc:::::::ccccc:::::cccccccccc::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkOOOOOOOk:,,'''..lkkxdc.....',;:cccc::::;::::::::::::cccccc:ccccc::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOkkkc,,'''..,okk;........',,,,,,,;;;::::::::::::cccccc:cc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkl,,''.....,,..........'''''',,;;::::::::::ccccc:ccc:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOxl;,''....................'',;;;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkkdl;,'....................,:::::::::::::::::ccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000000000OOOOOOkxddooll:'..................',:loc:::::::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkxxdoollllllc;..............',;;cloxxlc::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;
KKKKKXXXXXKKKKKKKKKXXXXXXKKKKXXXXKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxddolccccccccccccc:;...........',:loddxkOOxc:::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKXXXXXKKKKKXXXKKKKKKKXXXXXKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddollcccccccc:::::ccccccccc;..........'',lkOOOOOkxl::::::::::::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc::::::ccccc:::::ccccc::cll'.........'',:oddxxxdoc::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc::::::::::::::::::::::::cccc;......''',,;clllodddc::::::::::::::;;;::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKK00Okxdolcccc:::::ccccccc:::::::::::::::::::::::;'........',,,,,,,,,;:ll::::::::::::;;;;;;;::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKXXKKKKKKKKKKKKXXXXXXKKKKKKKKKKKXXXKKKKKKKKKKK00OOkddollcc::::::::::::::cccc::::::::::::::::::::::::'.......',;;;,........,:::;:;;;;;;;;;;;;;;;::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc:::::::::::::::::::::::::::::::::::::::::::::........;;:::'........,;;;;;;;;;;;;;;;;;;;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxxxddddddooooooooooolooddxxk0KKKKKKKKKKKKKKKK00Okxddollllllllllccccc::::::::::::::::::::::::::::::::::::::::::,.......,:::::'........,;:;;;;;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;.';;;;;;;;
:::::::::::::::::::::::::ccccclok00KKKK0OOkxdooolllccccllllllllcccc::c::::::::::::::::::::::::::::::::::::::::,.......,;;;;;;.........,;:;;;;;;;;;;;;;;;;;;;;;:::::::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::cccccccloxxdolllllllllccccccccclllccccccc:::::::::::::::::cc:::::::::::::::::::::::,......';;;;;;;,.........,;;;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::ccccccclllccccclllcccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::::::,......;;;;;;;;;;,........,;;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:;;;;::;;;'.....,;;;;;;;;;;;;,......';;;;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::cccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;......,;;;;,,,;;;;;;'......',;;;;,,;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::ccc:::::ccccccccccccccccccccccccccccccccccccccccllllllcccc:::::::::::::::::;;;:::;;:::::;;;;;;;;,,;;;;,,,,,.........,,,,,,,,;;,,,,......',,;;,,,,,,,,,;;;;;;;;:::::;;;;;;;;;;;;;,,,,,;;,,,,,,,,,,,,,,,
::ccc::ccccccccccccccccccccccccccccccccccccccccccllllllccc::::::::::::::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,''.............',,,,,,,,;,,,,,'.....',,,,,,,,,,,;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc:cclllllc:::::::::::::::::::;;;;;;;,,,,,,,,,,,,;,,,,,''................',,,,,,,,,,,,,,,,'......',,,,,,;;;;;;;;;::;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccc::::::ccccccccccccccccccccccccccccccc:::clllccc:::::::::::::::::::;;;;;;;,,'',,,,,,,,,,,,''.................',,,,,,,,,,,,,,''.........',,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllccc::::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............'',,,,,,,,,,,,,,,,,''...........'',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc:::::;;;;,,,;,,''',''',,,;;,,''.......''',,,,,,,;,;;,,,,,;;;,,'.............'',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc:::::::::::::::::::;;;;;;;;,,'',,,,,,;;:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,'..............''',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccclloolcc::::cc:::::::::::::::::;;:::;;;;:;;:::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,'''..............',,,,;;;,,,;;;;;;;,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccc:cccccccccccccccclllllccllllooolccc:ccccccc:::ccccc::::cc::,,,;::ccc:::::::;;;;;;;;,,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,'............,,,;;;,,,,,;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllccllllloolcccccccccccllllllccc:::c::;,,,,;;:::::::::;;;;;;;,,,,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,,,''........',;;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllcclllloooollllllllllcclllccc:::::::;;;;;;;;;;;::::;;;;;;;;;;;,,,,,,,,;;;;;;;;;;;;;;;;;,,,,;;;,;;;;,,,,'''',,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::cccccccccllllllllllllllllllllllllllllcccc:::::::::;;;;;;;;;;;;;;,;;;:::;;:;;;;;;;;;,,,;,,;;;;;;,;;;;;:;;;;;,,,,;:;;;;;;;;;;;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloolllllllllllllllllllcccc:::::::::::::;;;;;;;;;;:::;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;,,;,;;;;;;;;;;;;,;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,''
::::::::::::::::::::::::cllllllccllllllllcccccccccc::::;;;;;;;;;;:::;;;;:::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;,,,;;;,;,,;;,;;;;,,,,;;;;,,;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc:::cccllllcllcc:::::::;;;;;;;;::::::::::;:::::::::::::::;;;;;;;;;;;;;;;;,;:;;;;;,,,;;,,,,,;;;;;;;,,,;;;;;,,,;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,',;;;;;;;;;;;,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,','''''''''''''''''''''''''
::::::;;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;:::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;,;;;;,,,,,;;;;;;::;;,,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::;:::::cccccccccccc::::;;,;;;;;;;;;;;;;;;;;;;;;:;::;;;;;;;::::::;;;;:::::;;;;;;;;,;;;;;,;;;;;;,,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;,,,,;;;;;;;,,,,;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;;::;;;;;;;;;,,;;;;;;;;;;;;;,,;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;::;;;;;;;;;;;,,,,,,;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::cllllllccccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,;;;,,,,;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;:::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;,,;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,,,,;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,,;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,,,''''''',,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;,;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,;,,,,,,;;;;;;;;,,,,,;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;:;;,,,,,,,,,,,,,,,,,,,,'',,'''''''',,,,,'''''''''''''''''''''''''''''''''''................'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;,,,',,,,,,,,;;;;;;,,,,,;;,,,,,,,,,;,,,,,,,,,,''''',,'''',,,,,,,''''''''''''''''''''''''''''.........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;',;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
oc:::::llllllddxkkxkkkOOoKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOxoooooollllllllloooollloolooooddodddooodoooooooooooodddddddddooooooddddoooooollccc;:::;;;;;;;;;;;;;;;,,,,''',,''''........'',;;,;;;;;,,,,,,,,,
dc:ldxxkxxOOO0KK0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkkkkkddxkkkxddxxkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkOOOxddddkOkkdodxxxdlcccloddl:coxxoc:::coddooc:ll;,';cc,;loollccccccccc:;,,,
OOO0KXXKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXKKKKKKKOxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookdxOxxkdc::okkxxOkdkOkocdkxc:xOOOkkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKKK000000OOOOOOOOOOkkOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clxdclOddkkkOxc::dOOkkkxdOOOkxkOOoo0KKKKKK0OkO0KKKKOxo
XXXXXNNNNXXXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxxlcxdcoolddodc:oxdlc:lc::o:lc,cdol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:,,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK00O
KXXXXXXXXX00K00OOOOOOOOOOOOOOkkkkkkOOkOOOOOOOOOOOOOOOOkkOkocc::;;:cc:;;,,,ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......',,'..',''......,,,..,;;;'.....,;,...'''......'.....';;;::;;:;:dO0000KKKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOkOOOOOOOO0c,'.  ..',,,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOkkkkkOOOkkkkkkkkkkkkOOOOOOOO0000000000l:;,''::::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdoc;'..';:cc::cc:::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;:cllcc::;;;;;;;;;;;;;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxddxxxxxxxxxxxdoc;,'.',,;:::::;;:::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,',,,;;;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO0OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollooooooddddol::;,'.',;;:::;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddooollllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddoollloodddddddddddddol:;,'''',;;::::;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoododddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000KKKKKK00OOkkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddoooollc:cllllllllllllllc:;'....,;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkOOOOOOkxxxOO000000000KKKKKKK00000000000OOkkkkkkkkkkkxxkkkkOOOO0KKK00Okxxxddddddddooodooooooollllccccclllll:,,,,,,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000xOxOkoololloc.xdKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkkxxxkkkOOO000K0OOOkkkkkkkkxxxdddddddxxxxxxdoooolllc:lkkxddolccc:;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000Ok0K0K0dkkkdoXXXXkdX:OKKKKKKO:d0o;;ckkKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxdddddddooooooolc:,,o00000KKK0kxxl;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
0000xO0OOOK0kXXXXXXXXXXXXXXXX0kXxKKKKKKKOcoddook00OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllc:'.';d0KKKXXXX0O00dllc:::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
OOkdxNNNNNNNNNNNNNXXXXXXXKKKKKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddooooool:'..';lx0XXXXXK0kdOkxdddddollc:;,,,,,,,,,,,,,,,,,,,''''',,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxo'...',;o0XXXXXX0ocOK0xddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXXXXXKKK0000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxo,.....':kXXXXXX0xkKXXKkdooooollodxxxddlc:;,,'',,,;;,,,,,,,,,;;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxdl'......;o0XXKKKKKKXXXXKkxxxxddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,,,,,,,,'''''''.''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxdol;........;xKXXKK00KXXXXXK0kxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxolc:,........;x0KK0kxOKXXXXXXXXK0kxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddooodddddddddddddddddddddddddddddolc:;'.......;dO00dodOKXXXXXXNNNNKkxxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdoooooooooooooooooooooooolc:::::dkkkxdllc,...,:,;lxlcdkKXXKKKXNNNNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:,''''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdooooooooooooooooool;,,,',,:kkkkkkxxxxc'':kl....,lxKXXKKKXNNNNNN0xdddddddddddddddddddddddddddddddddddooc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollloooolllc;,,,''',:::::c:;:l;''''......cxKXK0KKXXNNNNNKddooooooooooooooooooooooodddooooodddddxddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOOOOOOOOkkxxxdoollllllc;,:cokkc'''''''''...............;okOO00KXNNNNNN0oooooooooooooooolooooolllllllllllooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllc'.';d0O:'''''....................':lx0KXNNNNNNN0oooollllllllllllllllllllllllllllllllllllllooooolllc:;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxooll,.:dk0Ol,'''......................,lk0KXNNNNNNXOooolllllllllllllllllllllcccccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdo;.':dO0x;'''.....................':dOKXNNNNNNNXOoollllllllllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000Odo;..',lkOx:,'....................,:dOKXXNNNNNNNXxollllllllclllllcclllcccccccccccccccccccccccc::cccc:::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO000000000000000Odc'...'l0Kx:,'..................'':dk0XXXNNNNNNXkollllcccccccccccccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkOOOOOOO000000000000x:....cOOo;,''..................',cdk0XXNNNNNNNXdllcccccccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOO0000000000kl:,,:oo:,''',;:c;'............',;cdk0XXNNNNNNX0ollccccccccccccccccccccccccccccc:::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOOO00000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000000Okoccc:;;:lxOOOd:,''.........,;:cokOKXNNNNNNNXkolccccc::::::::::ccccccccccccccc:c;:c:::cc::::c::::::::
kkkkOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000KK000OolllldO00000d;,''........',:loxOKXXXXXXXXXXKklccccc::::::::::cccccc::cccc:::cccccc:cc::::::::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO000000000000000K0KKK0l;,'''.......,:lddkO0KKKKK000000klccccccc::::::::ccccc::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO00000000K00KKKKK0l,,'''......'coddddddxxxxxxddollcccccccccc:::::ccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOOO0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000K0l,,'''''...;odddd:,,,,;:ccccccc:::::cccccc:::::cccccccccc::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkOOOOOOk:,,'''''..'xOOxl,......',;:cc:::;:::::::::::::ccccc:ccccc::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkc,,,'''''...'lxl.........',,,,,,;;::::::::::::cccccc:cc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOkc,,,'''''................'..''',,;::::::::::ccccc:ccc:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkOOOOOOOOOOOOOOOOOd:;,'''......................'',;;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOxl:;,,'.....................'';:::::::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000000000OOOOOOkkkkdl:;,....................'',:odlc::::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkxxdoooddol:;'...........''....',;:cloxxc::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;
KKKKKXXXXXKKKKKXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxddollcccccccodoc:;'.........,;;;,'';clloxkOOd:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKXXXXXKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddollcccccccc:::::::codoc::;........,;:;,''':xkOOOOOxl:::::::::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc::::::ccccc:::cc:cccccc:::;.....';:::;''',:dxkkkxxdc:::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::::::::::::::::::cc;..''''','...,;:::;,'',:cllodddo:::::::::::;;;::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKXXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKK00Okxdolcccc:::::cccccc::::::::::::::::::::.......';;;'';:::::;,,,;:::clooo::::::::;;;;;;;::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKXXKKKKKKKKKKKKXXXXXXKKKKKKKKKKKXXXKKKKKKKKKKK00OOkddollcc::::::::::::::cccc:::::::::::::::::::,.......,;;;;::::::::;,.......,:::::::;;;;;;;;;;::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::::::::::::'.......;;:::::::::::;'.......';::;;;;;;;;;;;;;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxxxxdddddooooooooooolooddxxk0KKKKKKKKKKKKKKKK00Okxddollllllllllccccc::::::::::::::::::::::::::::::::::::::'.......;::::::;:::::;'.......';::;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;,;;;;;;;;;
:::::::::::::::::::::::::ccccclok00KKKK0OOkxdooolllccccllllllllcccc::c:::::::::::::::::::::::::::::::::::::'.......;;:::;;;;;;;;;........';:;;;;;;;;;;;;;;;;;;:::::::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::cccccccloxxdolllllllllccccccccclllccccccc:::::::::::::::::ccc:::::::::::::::::::'.......;;;;;;;;;;;;;;.........;:;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::ccccccclllccccclllcccccccccccccccccc::::::::::::::::::::::::::::::::::::::::::;.......;;;;;;;;;;;;;;,'.......';;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:::;;:::,......,;;;;;;;;;;;;;;;,.......,;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::ccccccccccccccccccccccccccccccccccccccclcccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;,.......,;;;;,,,;;;;;;;;,......',;;,,;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::ccc:::::ccccccccccccccccccccccccccccccccccccccclllllllcccc:::::::::::::::::;;;:::;;:::::;;;;;;;;,,;;;;,;;,..........,,,,,,,,;;,,;;;,......,;;,,,,,,,,,;;;;;;;;:::::;;;;;;;;;;;;;,,,,,;;,,,,,,,,,,,,,,,
::ccc::ccccccccccccccccccccccccccccccccccccccccccllllllccc::::::::::::::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,''''...........',,,,,,,,;,,,,,,,.....,,,,,,,,,,,;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllc:::::::::::::::::::;;;;;;;,,,,,,,,,,,,;,,,,''.................',,,,,,,,,,,,,,,,,......',,,,,,;;;;;;;;;:;:;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccc::::::ccccccccccccccccccccccccccccccc::cclllccc:::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'.................',,,,,,,,,,,,,,''.........',,,,;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllccc::::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............'',,,,,,,,,,,,,,,,,''...........'',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::cccccccccccccccccccccccccccccccclolcccc::::::::::ccc:::::;;;;,,,;,,''',''',,,;;,,''.......''',,,,,,,;,;;,,,,,;;;,,'..............',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::cccccccccccccccccccccccccccccclloolccc:::::::::::::::::::;;;;;;;;,,'',,,,,,;;:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,''.............''',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccclloolcc::::cc:::::::::::::::::;;:::;;;;:;;:::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,'''..............',,,,;;;,,,;;;;;;;,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccc:cccccccccccccccclllllccllllooolccccccccccc:::ccccc::::cc::,,,;;:ccc::::c::;;;;;;;;,,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,'............',,;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllccllllloolcccccccccccllllllccc:::c::;,,,,;;:::::::::;;;;;;;;,,,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,,,'''.......',,;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllcllllloooollllllllllcclllccc:::::::;;;;;;;;;;;;:::;;;;;;;;;;;,,,,,,,,;;;;;;;;;;;;;;;;;,,,,;;;,;;;,,,,,,,,,',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::cccccccccllllllllllllllllllllllllllllcccc:::::::::;;;;;;;;;;;;;;;;;;:::;;::;;;;;;;;,,,;,,;;;;;;,;;;;;:;;;;;,,,,;:;;;;;;;;;;;;;,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloolllllllllllllllllllcccc:::::::::::::;;;;;;;;;;::::;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;,,;,;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cllllllccllllllllcccccccccc::::;;;;;;;;;::::;;;;:::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;,,,;;;;;;,;;,;;;;,,,,;;;;,,;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
:::::::::::::::::::::::::ccccc:::cccllllcllcc:::::::;;;;;;;;::::::::::;::::::::::::::::;;:;;;;;;;;;;;;,;:;;;;;,,,;;,,,,,;;;;;;;,,,;;;;;,,;;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;,;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,','''''''''''''''''''''''''
::::::;;;;;;;;;;;;;;;;;:::::::::::ccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;,;;;;,,,,,;;;;;;::;;,,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::;:::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;:;::;;;;;;;::::::;;;;:::::;;;;;;;;,;;;;;,;;;;;;,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;,,,,;;;;;;;,,,;;;,,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;;::;;;;;;;;;,,;;;;;;;;;;;;;,,;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;::;;;;;;;;;;;,,,,,,;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::cllllllccccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,;;,,,,;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;;,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;,,;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,,;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::;::::;:;;;;;;;;;;:::::c:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;:::;;;;;;;;;;;;:::c::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,,,''''''',,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;,;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,;,,,,,,;;;;;;;;,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''................'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;;,,,,,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;,,,,,,,,,,''''',,''',,,,,,,,''''''''''''''''''''''''''''.........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;',,;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
oc:::::lllllcddxkkxkkkOOoKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOxoooooollllllllooooollloolooooddodddooodoooooooooooodddddddddooooooddddoooooollccc;;::;;;;;;;;;;;;;;;,,,,'',,,''''........'',;;,;;;;;,,,,,,,,,
dc:lddxkxxOOO0KK00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddxkkkxddxxkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkOOOxddddkOkkdodxxxdlcccloddl:coddoc:::coddooc:ll;,';cc,;loollccccccccc:;,,,
OOO0KXXKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookdxOxxkdc::okkxxOkdkOkocdkxc:xOOOkkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkdclkddkkkOxc::dOOkkkxdOOOkxkOOolOKKKKKK0OkO0KKKKOxo
XXXXXXXXXXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxxlcxdclolddodc:oxxlc:lc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dccoc;,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK00O
KXXXXXXXXX00K00OOOOOOOOOOOOOOOkkkkkOOOOOOOOOOOOOOOOOOOOOOkoclcc;::clc;;,,,ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......',,'..',''......,,,..,;;;'.....,;,...'''......'.....';;;::;;:;:dO00000KKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOkOOOOOOOOOo:'.  ..',,,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOkkkkkOOOkkkkkkkkkkkkOOOOOOOO0000000000dc:;,,::::::;,,'.....'',,,''''''''''''.'...................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdoc;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxddxxxxxxxxxxxdoc:;,'',,;::ccc:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO0OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollooooooddddol::;,'.',;;:::;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddooollllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;;::::;;;;;;,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoododddddoolc:;,,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000KKKKKK000OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddoooollcccllllllllllllllc:;''..',;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkOOOOOOkkkxOO000000000KKKKKKK00000000000OOOkkkkkkkkkkxxkkkkOOOO0KKK00Okxxxddddddddooodooooooollllccccllllllc;,,,,,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXkcOOkKKkKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkkxxxkkkOOO000K0OOOkkkkkkkkxxxdddddddxxxxxxdoooollllcc:lddoolc::;;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000OOXXXXXXXXXXXK0XXXXX:OKKKKKKKKKK0xKKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxdddddddooooooolllc:,,o00000000kdo:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
O0000O0OOOK0kXkXXXXXXXXXXXXXXXXXxKKKKKKKKKKKOxkO00OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooolllllllllll;'.':x0KKKXXXKOOOoc::::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
KXXXXXkO000000x0NNXXXXXXXKKKKKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddooooooool:'..';o0XXXXXXK0kOkdddddollc:,,,,,,,,,,,,,,,,,,,,''''',,,,,,,,,,,,,,,,,''''''''''
0NNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxo'...',cOKXXXXXX0oxkxddddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXKXXXKKK0000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxd,....',xKXXXXXKOk0XX0xooooollodxxxddlc:;,,'',,,;,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdl'.....'lOKXKKKKKKXXXX0xxxxddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,;,,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxol:.......,o0XXKKKKKXXXXXOxxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxdolc:,.......'l0KKK0kOKKXXXXXKK0Okxxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddooodddddddddddddddddddddddddddddocc:;;;,......,ok00kddx0KXXXXXNNXXKkxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddxddol:;;;;,,,'....,;;:ddclox0XXXXXXNNNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdooooooooooooooooooooooox0kdc;,,,,,,,,,''''dOocc;,cox0XXXKKXNNNNX0xxddddddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollllooooollccclodddc;,,''''''',,,';c:,,,,;loOXXKKKKXNNNNXkddooooooooooooooooooooodddooooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOOOOOOkkOkxxxdoollllllllc:;;;;;:xx:;,,'',,''',,,,,,,,,'',:lk0OO00KXXNNNXOdooooooooooooolooooolllllllllllooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollllc:;;;;;;cxo:;,,'',;'''''''....''''';llclx0KXXNNNXkoollllllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxdollc;::::cclol:;,,',;;''''........'''',;;:cd0KXXNNNXxollllllllllllllllllllccccccccccccccccccccllllcccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdl;ckOOkkxddl;,,,,;;''''.','....'''',;;:cx0KXNNNNXkolllllllllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000OOOd';k000KK0kxl;,,,;;''''.','....''',,,;:ck0KXXNNNXKxlllllcclllllcclllcccccccccccccccccccc::::::cccc:::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO00000000000000000Od;dO0KKKKXXKOc''.'''''...'...''''',,,;:d0KKXXNNNXXklcccccccccccccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkOOOOOOO000000000000Oko::dkdOKXXXXO;.................''',,,;lk0KKKXNXXXX0occccccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOO00000000000xl;,;;,xKXXKkc'.................''',,;:dO00KKXXXXXXKocccccccccccccccccccccccccc:::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOOO00000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO00OO000000kl,,,,cOK0kc;,,'...............''''';cdkO00KKXXXXXXKocc:::::::cccccccccccccccc:ccc::::::c::::c::::::::
kkkkOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0000000000dc;,;xdl::;;;,,'.............''''';:okOOO00KKK00OOOoccccc::::::ccccc::ccccc::::cc::::::c:::::::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000Okdc::;:loo:;;'.............'',ldxxxxxkkkOkkkkkkxxlccccc::::cccccc:::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO0000OOOkxodk0Odc:;,'........'..''';xOOOxoc::::lllloollcc:::cccc:ccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOOO0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkc::;,,'''''''',;,'''',dxl;'......';::::ccc:::::ccccccccccccc::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxl:;;;,,'''''...',,'''..............,;;::::::::::::ccccc:ccccc::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOkkxl:;;,,,''''.........................,;;:::::::::::::cccc:cc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOkkoc:;,,,'''....................,'.....',;;::::::::ccccc:ccc:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkOOOOOOOOOOkxdl:;;,,'''...........................',;;:::::::::cccc::::::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOkxolc:;;,,,''..........................';colc::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000000OOkxdolcc::;,,'...........................';lddxxl::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKK0xxxxxxxxxkKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000Okxdollccc:::;;,'.....',,,,,''''....''''',,;coddk0dc::::::::::::::::::::::::::::::::::::::::::::;;;;;;
KKKKO;;;;lKKKKOllllllllldKK0OOKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxdlcc:c::cc::::::;;,...',,,,;;;;,,,,,,;;;;;::::codk0Kdocccc::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKx    .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKO'c,,dKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddollccc;,'....'..:::;;;;;;;;,,;;;;;;;;;;;;;;;;:::::ccoxxk0Okxdlccc::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKk....,KKKKKKKKKKOOOOOKK0OOKKKKKKKKK0,.. .KKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc:::::;'........';;;;;;;;;;;;;::::::::::::::::::::cccdOOOOxxddocc:::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKx    .KK: .KKKKKKKKKKKKKl.KKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::::::;........'::;;;;;;;;:::::::::::::::::::::::;;;;:loollddddl::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKl.lKKKKKOOOOOKK: .KKKKKKKKKKKKKx.KKKKKKKKKKKKKKKKKKKK00Okxdolcccc:::::cccccc::::::;.........,;;;;;;;;;::::::::::::::::::::::::;;,;;::;:cllcc:::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKK0odKKKKKKKKKKKKkol::xKKKKKKKKKK0oxxOKKKKKKKKKK00OOkddollcc::::::::::::::cccc:::::::;'........';;;;;;;;;:::::::::::::::::::::::;;;;;,'''....';::::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKK0ddOKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::,........';;;;;;;;:::::::::::::::;;;;;;;;;;;;;,........,;::;:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
00000OO00OOOOOOOOOOOOOOOO000KKKKKKKKKKKKKKKKKK00Okxddollllllllllccccc:::::::::::::::::::::::::::::;,.......';;;;;;;::::::;;::;;;;;;;;;;;;;;;;;;;;.......';;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
ccccccccccc:::cccccc:::cccclloodkO00KKK0OOkxdooolllccccllllllllcccc::c::::::::::::::::::::::::::::::,.......';;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;........,;;;;::::::::::;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::cccccccllodollllllllllccccccccclllccccccc:::::::::::::::::cc::::::::::::::;,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'........,;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::ccccccclllccccclllcccccccccccccccccc:::::::::::::::::::::::::::::::::::::;;,......,;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,'........';;;;;:::::::::;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;;'........'',,,,;;,;;;;;;;;,,,;;;;;;;,.........';;;;;::::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::::ccccccccccccccccccccccccccccccccllllcccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;,...........',,,,,,;;;;;;;,,,;;;;;;,'........';;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllcccc:::::::::::::::::;;;:::;;:::::;;;;;;;;,,;;;;,'............,,,,,,,,,,,,,,,,,,,,,,'.......,;,,,;;;;;;;:::::;;;;;;;;;;;;;,,,,,;;,,,,,,,,,,,,,,,
:::::::ccccccccccccccccccccccccccccccccccccccccccllllllcccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,''............,,,,,,,,,,;,,,,,,,,'..........,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllcc::::::::::::::::::;;;;;;;,,,,,,,,,,,,;,,,,''...............'',,,,,,,,,,,,,,,,'...........,;;;;;;;;;;:;;:;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccc::cc:ccccccccccccccccccccccccccccccccc:cclllccc:::::::::::::::::::;;;;,;;,,,',,,,,,,,,,,,,'..............'',,,,,,,,,,,,,,,,''...........,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllccc::::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............',',,,,,,,,,,,,,,,,''............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,''',''',,,;;,,''.......''',,,,,,,;;;;,,,,,;;;,,'..............',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::c:cccccccccccccccccccccccccccclloolccc:::::::::::::::::::;;;;;;;;,,'',,,,,,;;:;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,''.............''',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccllloolcc:::ccc:::::::::::::::::;;:::;;;;;;;:::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,,'''.............',,,,;;;,,,;;;;;;;,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccc:cccccccccccccccclllllllllllooooccccccccccc:::ccccc:::ccc::,,,;;:ccc::::c::;;;;;;;;;,,,,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,'............',,;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllccllllooolcccccccccccllllllccc:::cc:;,,,,;::::::::::;;;;;;;;,,,,,,,,;,,,,,,,;;;;;;;;;,,,,,;,,,,,,,'''.......',,;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllcclllloooollllllllllcllllccc:::::::;;;;;;:;;;;;:::;;;;;;;;;;;,,,,,,,,;;;;;;;;;;;;;;;;;,,,,,;;;;;;;,,,,,,,'',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::ccccccccclllllllllllllllllllllllllllllccc::::::::::;;;;;;;;;;;;;;;;;:::;;:;;;;;;;;;,,,;,,;;;;;;,;;;;;:;;;;;,,,,;:;;;;;;;;;;;;;,,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllolllllllllllllllllllcccc:::::::::::::;;;;;;;;;;::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;,,;,;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cllllllccllllllllcccccccccc::::;;;;;;;;;:::::;;;:::::::::;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,,;;;;;;,;;,;;;;,,,,;;;;,,;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::cccccc:::cccllllcllcc:::::::;;;;;;;;::::::::::;:::::::::::::::;;::;;;;;;;;;;;;;;:;;;;;,,,;;;,,,,;;;;;;;,,,;;;;;,,;;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,','''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;,;;;;,,,,,;;;;;;::;;;,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::;:::::cccccccccccc::::;;,;;;;;;;;;;;;;;;;;;;;;:;::;;;;;;:::::::;;;;:::::;;;;;;;;,;;;;;,;;;;;;,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllc:::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;,,,,;;;;;;;,,,;;;;,,;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;,,;;,,,,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;::;;;;;;;;;;;,,,,;;;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::cllllllccccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,;;,,,,;,,,;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,,;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::c::::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,,;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,'''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;,;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''',,',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
:::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;,,,;;;;,,,,,,;;;;;;;;,,,,,;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,;;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''..................'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;,,,,,,,,,,''''',,'''',,',,,,''''''''''''''''''''''''''''.........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
oc:::::llcclcddxkkxkkkOOoKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOxoooooollllllllloooollloolooooddodddooodoooooooooooodddddddddooooooddddoooooollccc;:::;;;;;;;;;;;;;;,,,,,'',,,''''........'',;;,;;;;;,,,,,,,,,
dc:lddxkxxOOO0KK00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddxkkkxddxxkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkOOOxddddkOkkdodxxxdlcccloddl:coddoc:::coddooc:lo;,,;cc,,loollccccccccc:;,,,
OOO0KXXKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookdxOxxkdc::dkkxxOkdkOkocdOkc:xOOOkkxddddxxxddocc
XXXXXNNXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkdclkddkkkOxc::dOOkkkxdOOOkxkOOolOKKKKKK0OkO0KKKKOxo
XXXXXNNNNNXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxxlcdocoolddodc:oxxlc:lc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;''''cl:cl;:dccoc;,;lkocccclkxxOkxkOllOKKKKKKKKKKKKXKK00O
KXXXXXXXXX00K00OOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOOOOOOOkocllc::cllc;;,,,ccc::,,;::;,,,';ccc:'.,;;,',;::;,..',,......',,'..',''......,,,..,;;;'.....,;,...,''......'.....';;;::;::;:dO0000KKKKKKKKKKKKK
000OOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkOOOOOOOOOo:;;;;;;;;,,'....'''''''''''''.'''''.......................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkOOOOOOOO0000000000dlcccc::::::;,,'.....'',,,''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdoc;'..';:cccccc:::::;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxddxxxxxxxxxxxdoc;;'',,,;::ccc:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,
KKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO0OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollooooooddddol::;,'.',;::::;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddooollllllooodddddddooc::;,',,;;:::::;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,'''',;;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoodooddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000KKKKKK000OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddooolllccclllllllllllllll:;''..',;;,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOOO000000000KKKKKKK00000000000OOOkkkkkkkkkkkxkkkkOOOO0KKK00Okxxxddddddddooodooooooollllccccllllllc;;;;;,,,,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXKKXXKKXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO000K0OOkkkkkkkkkxxxdddddddxxxxdddoooolllllcc;okkxxddllc;,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKXXXXXXXXXXXNNNNXXXKKKKKKKKKKKKXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxdddddddooooooollll:;''ckK000KKX0ko:;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooollllllllllllc;'.';d0KKXXXXX00Ooc:::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
KXXXXXNNNNNNNNNNNNXXXXXXXXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddoooooooodd;''.',lOKXXXXXX0OOkddddollc:;,,,,,,,,,,,,,,,,,,,''''',,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKKK000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxx;....';xKXXXXXX0xkkxdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXXXXXKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOkkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxx;.....'lOXXKKKK0OKXKkdooolllodxxxddlc:;,,'',,,;;,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdo,......,dKXKKKKKXXXXXkdddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,;,,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdol:........:0KKKKKKXXXXXKkxxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxdolc:,.......,d0KKKK0KKXXXXXKOkxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddoooddddddddddddddddddddddddddddxxolc::;,''.....'cdO0OxdOKXXXXXXXXK0kxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,'''',,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdoooooooooooooooooooooooooddddddddl:;;;;,,,'...':c;;ddllok0XXXXXXXXXXKOxxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxxdoooooooooooooooooooooooooool:;,,,,,,,,,''''d0xoc;:lox0XXXXXXXNNNX0xxdddddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooolllooooooooooooooooc;,,''''''',,,'',c:;;;;lox0XXXKKXXNNNNXkddoooooooooooooooooooodddooooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOOOOOOOOkkxxxdoollllllllllllllllll:;,,'''''''',,,,,,,,,,;;cdOKXXKKKXXNNNX0doooooooooooolooolllllllllllllooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddollllllllllllllc:;;,'',,'''''',''''''',,;lkOkkxOKXXNNNN0doollllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOxoollllllllloolc:;,,'',;,'''''.......'''';cl:::dKKXXNNNKdlllllllllllllllllllcccccccccccccccccccclllccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxddolokkdooolc:;,,,;;,''''.','....'''',;;;::dKKXXNNXKdolllllllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O0000000000OkxO0kxxxdddl;,,;:,''''.'''...''''',;;;;:d0KXXNNXXkolllllcclllcclllcccccccccccccccccccc:::::::::::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkkOOOO0000000000000KKKKKXKKXKKKKKK00Okl,,,;'''''''''..''''''',,,;cxKKXXXNNX0dllllccccccccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkkOOOOOO000000000KKXXXXXXXXXXXNNNXXXO:...'''''.......''''''',,;oOKKXXXNNNKxlllccccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOO0000000KKXXXXXXXXXXNNNNXXKx,...............''''''',:coO0KXXXXNNXOollcccccccccccccccccccccc:::::::::::::::::::::::
xkkkOOOOOOOOOOOOOOOO00000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000K0K00Od;l0KXXXXXKk:.............'okkOkdc;;dkOOO0KKKKKKKK0occccccccccccccccccccccc:ccc::::::cccccc::::::::
kkkkOOOOOOOOOOOOOOOO000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO0000000000Oxc'dOdxKXKxc;,.........',;,'d00000Oxx00000O00000OOOkoccccccc:::ccccc::cccc::::cc::::::c:::::::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000kd:;;:dkdl:;;;,.......';ldocxOOOOOxddoxK0xddxkkkkkkxlcccc:::::ccccc::::c::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO0000OOkxdc::::;;;;;'.....';cdxoc;,,,,,'.'',::,,,cloodddlccccc:::ccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOO00000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkdol::;;;,'''''.';;::'..................'',;::cc:ccccc:cccccccccc::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkdc;;,,''...............................,;;::::::::::cccccccccc::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxl:;,,,''.....................''.......',;;::::::::::ccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOkkd:;;,,,'''....................''......',;;:::::::::ccccccc:::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkOOOOOOOOOOOkxo:;;,,,''''..........................',;;::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkOOOOOOOOOOkxdoc:;;,,,,,'..........................';clc::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OkOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000000000Okxdolcc:;;,,,,''.........................';ldddl::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKK0xxxxxxxxxkKKKKKKKKKKKKKKKKKKKKKKK00kkxkOxxkOOOOOOOOOOOOkkkkOOOOOOOOOOOO0000000000000Oxdollccc:;;,,,,,''''''''''''''.........'',;codxxko::::::::::::::::::::::::::::::::::::::::::::;;;;;;
KKKKO;;;;lKKKKOllllllllldKK0OOKKKKKKKKKKKKKKKKKKKKKK00kcdO00000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkkxddoolllccc:::;;,,,,,,,,,,,,,;,,,,,,,,,,,,;;;::cloxOKxlc::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKx    .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKO'c,,dKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddollccc:;,,,;:cccc:::;:;;;;;;;;;;;;;;;;;;;;;;;;;;::::ccoxkO0Kkdolccc::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKk....,KKKKKKKKKKOOOOOKK0OOKKKKKKKKK0,.. .KKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc:::::;'......';cc:::::::;;;;;;;;::::::::::::::::::ccccdkOOOxxddlccc::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKx    .KK: .KKKKKKKKKKKKKl.KKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::::::'........,::::;;;;;;;;;;;;:::::::::::::::;;,,;;;;:clllodxdoc::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKl.lKKKKKOOOOOKK: .KKKKKKKKKKKKKx.KKKKKKKKKKKKKKKKKKKK00Okxdolcccc:::::cccccc::::::'........':::;;;;;;;;;:::::::::::::::::::::;;;,,,;;;;;:cclc::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKK0odKKKKKKKKKKKKkodKKKKKKKKKKKKK0oxxOKKKKKKKKKK00OOkddollcc::::::::::::::cccc::::::;'.........;:;;;;;;;::::::::::::::::::::::::::;;;;;,'......,;::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc:::::::::::::::::::::::::::::,.........;:;;;;;;::::::::::::::::;;;::::;;;;;;;;,........,;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
OOOOOOOOOOOOOOOOOOOOOOOOO000000KKKKKKKKKKKKKKK00Okxddollllllllllcccc:::::::::::::::::::::::::::::;'........;;;;;;;::;;::::;;;;;;;;;;;;;;;;;;;;;;;;'........;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
ccccccccccc::ccccccc::::ccccccllloxkkO00OOkxdooolllllllllllllllcccc:::::::::::::::::::::::::::::::::,.......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'........;;;::::::::::;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::c:cccccllllllllllllccccccccclllcccccc::::::::::::::::::ccc:::::::::::::;'......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::cccccclcccccllllccccccccccccccccc::::::::::::::::::::::::::::::::::::;;;,......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,.........,;;::::::::::;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;:;;;;'........',,,,,;;;;;;;;;;;,,,;;;;;;;;,'........';;;;::::::::;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::::ccccccccccccccclccccccccccccccclllllccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;,...........',,,,,,,;;;;;;,,,;;;;;;;,'........,;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::;;;;:::;;:::::;;;;;;;;,,;;;;,'............,,,,,,,,,,,,,,,,,,,,,,'........,,,;;;;;;;;:::::;;;;;;;;;;;;,,,,,,;;,,,,,,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccllllllccc:::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,''............',,,,,,,,,,,,,,,,,,''.........,,,;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccc:::::::::::::::::;;;;;;;,,,,,,,,,,,,;,,,,''...............'',,,,,,,,,,,,,,,,'...........',;;;;;;;;;;:;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccc::ccccccccccccccccccccccccccccccccc:cclllccc:::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'..............'',,,,,,,,,,,,,,,,,'...........',;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccc:cllllcccc:::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''............',,,,,,,,,,,,,,,,,,''.............,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,'',,,'',,,;;,,''.......''',,,,,,,;,;;,,,,,;;;,,''.............',,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloolccc:::::::::::::::::::;;;;;;;;,,'',,,,,,;;:;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,'..............'',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccllloolcc:::ccc:::::::::::::::::;;:::;;;;:;;:::::::;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,,'''.............',,,,;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccc:cccccccccccccccclllllcclllloooocccccccccc::::cccccc::ccc::,,,;;:ccc::::c:::;;;;;;;;;;;,,,;,,,,,,,;;;;;;;;;,,,,,,,,,,,'............',,;;;,,,,,;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllcclllloooocccccccccccllllllccc::::::;,,,,;:::::::::::;;;;;;;;;;;;,,,;,,,,,,,;;;;;;;;;,,,,,;,,,,,,,'''.......',;;;;;,,,,,;;;;;;,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllcclllloooollllllllllcclllccc:::::::;;;;;;:;;;;;:::;;:;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::ccccccccclllllllllllllllllllllllllllllccc::::::::::;;;;;;;;;;;;;;;;;:::;;::;;;;;;;;;;;;;;;;;;;;,;;;;;:;;;;;,,,,;:;;;;;;;;;;;;;,,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllclllllccc:::::::::::::;;;;;;;;;;::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;,,;,;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cllllllccllllllllcccccccccc::::;;;;;;;;;:::::;;;;;;::::::;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,,;;;;;;,;;,;;;;,,,,;;;;;,;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::cccccc:::cccllllcllcc:::::::;;;;;;;;::::::::::;::::::::::::::::;::;;;;;;;;;;;;;;:;;;;;,,,;;;,,,,;;;;;;;,,,;;;;;,,;;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::;:::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;,;;;;,,,,,;;;;;;::;;;,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;::;;:::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;:::::::;;;;:::::;;;;;;;;,;;;;;,;;;;;;,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllcc::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;,,,,;;;;;;;,,,;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;,,;;,,,,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;:;;;;;;;;;;;;,,,;;;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllcccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,;;,,,,;,,,;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;:::;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::c::::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,'''''''''',,,,,,,,''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''',,',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
:::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;,,;;,;,,,,,,;;;;;;;;,,,,,;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,;;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''.''''.............'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;,,,,,,,,,,''''',,'''',,',,,,''''''''''''''''''''''''''''.........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
oc:::::llcclcddxkkxkkkOOoKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXOxoooooollllllllooooollloolooooddodddooodoooooooooooodddddddddooooooddddoooooollccc;:::;;;;;;;;;;;;;;,,,,,'',,,''''........'',;;,;;;;;,,,,,,,,,
dc:ldxkkxkOOO0KK00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddxkkkxddxxkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkOOOxddddkOkkdodxxxdlcccloddl:coddoc:::coddooc:lo;,';cc,;loollccccccccc:;,,,
OOO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkodkxxkdc::okkxxOkdkOkocdOkc:xkOOkkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkdclkddkkOOxc::dOOkkkxdOOOkxkOOooOKKKKKK0OkO0KKKKOxo
XXXXXNNNNNXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOkxlcdoclolddodc:oxxlc:lc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:dcco:,,;lkocccclkxxOkdkOllOKKKKKKKKKKKKXKK00O
XXXXXXXXXX00K000OOOOOOOOOOOOOOkkkkkOOOOOOOOOOOOOOOOOOOOOOkdccc:::cllc;;,,,ccc::,,;::;,,,';ccc:,.,;;,',;;:;,..',,......',,'..',''......,,,..,;;;'.....,;,...'''......'.....';;;::;::;:dO00000KKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOkOOOOOOOO0d:;;;;;;;,,,'....'''''''''''''.''..........................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOOO0000000000dccccc:::::;;,,'.....'',,,''''''''''''.....................................................................................,;;;;;;;;;;;;::::::
OOOkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdoc;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxddxxxxxxxxxxxdoc;;'',,,;::ccc:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO0OOOOOOOOOOOOOOOOOkOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollloooooddddol::;,'.',;;:::;;;;;;;;,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddooollllllooodddddddooc::;,',,;;:::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoodooddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'.'',,;,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000KKKKKK000OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxdddddddoooolllccclllllllllllloll:;'...',;;,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOkkkkkkkkkkkkkkOOOOOOOOOOOO000000000KKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxddddddddooodooooooollllccccllllll:;clccc::;,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXKKXXKKXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO000K0OOOkkkkkkkkxxxxddddddxxxxxddoooolllllcc:,;d0K0OO00ko:;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKXXXXXXXXXXXNNNNXXXKKKKKKKKKKKKXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxxxddddddooooooolllllc:'.'lOKKKKXXXKOd;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllllllc;'..':d0XXXXXXXK0l:::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
KXXXXXNNNNNNNNNNNNXXXXXXXXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddoooooooooddl'...',l0KKXXXXXKOxdddollc:,,,,,,,,,,,,,,,,,,,,''''',,,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkx;....';xKXXKKXK0Oxdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXXXXXKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxo'.....'c0XXKKKKKXKOxdooolloddxxddlc:;,,'',,,;,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdl,.......'xKXXXKKXXXX0xddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,;,,,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc'........;xKKKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,,''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdoc:;'.......'lkO0KKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddooodddddddddddddddddddddddddddxxxxolc:;;,,''....';:lkOkxOKXXXXXXXK0kxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,,''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl::;;;,;;,'...,xOkxdoodk0XXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooool:;,,,,,,,,,,,'.'cOkoooddx0XXXXXXXXNXKOxxddddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollllooooooooooooooooc;,,'''''',,:cl;''lxdddoodOKXXXXXXNNNNKxdoooooooooooooooooooodddooooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOkkxxxdollllllllllllllllllol:;,,,'''''';coxl::ldlcccldx0XXXXXXNNNNXkoooooooooooolooooolllllllllllooooooodddddlc:;,'''
kkkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkOOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllc:;;;;;;,,'''';c:;;cdlcccldxOXKKKKXXXNNXOoollllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllol:;;;;;;;;;,,''''..'oO0OxdodxkkxdkOKXXNNX0dlllllllllllllllllllcccccccccccccccccccllcccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdollloooooxxdlc:;;;;;;;,::,;c;,;lx0KXKOOkxoldk0KXXNNKdolllllllllllllllllcccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdoooodxOKKKOd::::;;;cclxo;,,;;cxKXXXXKkxdk0KXXNNXkollllllllccccllllcccccccccccccccccccccc:::::::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOOO000000000000000000000Okddxxk0KXXXKd::c::cl:coc,,;;;;;cdOKKKOOO0KKXNNNXOolllllllccccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkOOOOOOO000000000000000000kkO0KXXXXXXXkc;c::c:;;;,,,,;;;;;;;:clx00KKXXNNNX0dlllcccccccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKK000kkO0XXXXXXXXX0l,,,;,,''......',,,,,,'':k0KKXXNNNNXkolcccccccccccccccccccccc:::::::::::::::c:::::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000000000kxk0KXNXNNNXXX0c...............'''......:dxxOKXXXXKkocccccccccccccccccccccc:ccc::::::c:::ccc:::::::
kkkkOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000000xoxOKXNNNNXXXXk'.............''''..........';x0kk0Okdcccccc:::ccccc:cccccc:::cc:::::::::::c::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000OdloxOKXNNXXXXO:.........'....'''..............,';xkxoccccccc:ccccc:::::::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO0000OxolloodOKXXOl:,.................................,ddlcccccccccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOO00000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxlllccldxo:;;;'................................'ollccccccccccccc::::::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdO0xlcccc:;;,.................................;ccccccccccccccc:::::::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkdk0KKOxxddo;,,.........................'',,'',,:cccccccccccccccc::::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOo:cdOOkkkkko;,'.....................''..'',;;::::ccccccccccccccc:::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOxc;::cdkkkkkl;,'.....................''..'',;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOkkkxc:::ccdkkkkxl;,'.....'...................',;;:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOxdllc::ldxxkkkxddollc;,'..'''...................';;:::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKXKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOO00000000Okxxxxxxkxxxolllllllc:;;,,''................',,;::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
KKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOO0000OOkkkxxxxddoollcccccloolc::;;,''...........',,;coodoc:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddolcccccccccccccc:::cclollccc::;,'''......'',ldxxkOkxo::::::::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXXKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc::::::::::::c:::::::clolcccc::;,,''''...,,,;oOOOOkkdc::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::c::::::::::::::::::collcccc:;;,,''...'',,,:cdxxxxddl::::::::::::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKK00Okxdolcccc:::::cccccc:::::::::::::::::::::ccccccc::;;,,''...',,,;:cccoddddc:::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKXXXKKKKKKKKKKK00OOkxdollcc::::::::::::::cccc::::::::::::::::::::;,'....',;;;,,''''''',,,,;;;;::cc:::::;;;;;;;;:::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllccc::::::::::::::::::::::::::::::::::::::::;,.......';;;;,,,,,,,,,;;........;:::;;;;;;;;;;;:::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkkkkkkkkkkkkkkkkkkkkkO0O0000KKKKKKKKKKKKKK00Okxddollllllllllcccc::::::::::::::::::::::::::::::::::::::;,.......',;;;;;;;;;;;;;;;........;;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::ccccclllodxxkOOOOkxdooolllccllllllllllcccc:::::::::::::::::::::::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;'.......;;;;;;;;;;;;;;;;;;::::::::::;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::c:cccccclllllllllllccccccccclllcccccc::::::::::::::::::ccc::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;'.......,;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::ccccccllcccclllcccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::;,.......,;;;;;;;;;;;;;;;;,.......',;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;;;;:,......,;;;;;;,,,;;;;;;;;,.......',,,;;;;;;;;;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::::cccccccccccccccccccccccccccccccclllllccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;'......,,,,,,,,,;;,;;;,,;,.......,,,,,;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
:::::::::cccccccccccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::;;;;:;;;;:::::;;;;;;;;,,;;;;,,,'..........,,,,,,,,,,,,,,,,,'......,,;,,,;;;,;;;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,'''...........',,,,,,,,,,,,,,,,,'......',;,,,;;;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccc::::::::::::::::::;;;;;;,,,,,,,,,,,,;,,,,''................',,,,,,,,,,,,,,,,,'........',,,;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,;,,,,,,,,,,,,,,,,,
:::::ccccccc:ccccccccccccccccccccccccccccccccc:cclllccc:::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'...............'',,,,,,',,,,,,,,'''..........',;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccc:::::::::ccccccccccccccccccccccccccc:cllllcccc:::::::::ccc::::::;;;,,,;,,''''''',,,,,,,''.............'',,,,,,,,,,,,,,,,''............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccccclolcccc:::c::::::ccc::::::;;;,,,;,,'',,,',,,,;;,,''.......''',,,,,,,;;;;,,,,,;;;,,''............'',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccccccccccccccclloolccc:::::::::::::::::::;;;;;;;;,,',,,,,,,;;:;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,''............''',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccllloolcc:::ccc:::::::::::::::::;;;::;;;;::::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,''..............',,,,;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::cccccccccccccccccccclllllllllllooooccccccccccc:::cccccc::ccc::,,;;::ccc::::cc::;;;;;;;;;;;,,,;;,,,,,,;;;;;;;;;;,,,,,,,,,,'............,,,;;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllccllllooooccccccccccclllllllcc:::c:::,,,,;:::::::::::;;;;;;;,,;,,,,,;,,,,,,,;;;;;;;;;;,;;,;;,,,,,,'''.......',;;;;;,,,,,;;;;;;,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllccllllooooolllllllllccllllcc::::::::::;;;;;;;;;:::;;:;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::ccccccccclllllllllllllllllllllllllllllccc::::::::::;;;;;;;;;;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;,;;;;;:;;;;;;;,;;:;;;;;;;;;;;;;,,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllollllllllllllllcllllcccc:::::::::::::;;;;;;;;;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;,;,;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cllllllccllllllllcccccccccc::::;;;;;:::;:::::;;;;;;::::::;;;;;::::::;;;;;;;;;;;:;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;,;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::ccccccc::cccllllcllcc:::::::;;;;;;;;::::::::::::::::::::::::::::::;;;;;;;;;;;;;;:;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::::::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::ccccccccc::::;;;;;;;;;;;;;;;::::::::::::::;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;::;;;,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::::::::cccccccccccc::::;;,;;;;;;;;;;;;;;;;;;;;:::::;;;;;;:::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllcc::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;,,;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;,,,,;;:;;;;;;;;;;;;,,,;;;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,;;,,,,;,,,;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,;;,,;;;,;,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::c::::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:;;;;;;;;;;,,,,,,;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;;,,,,;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,'''''''''',,,,,,,,''''''''''''''''''''''''''''....
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''',,',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
:::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;,;;;,,,,,,,,;;;;:;;;,,,,,;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,;;;;,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,;;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''..............'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;,,,,,,,,,,''''',,'''',,',,,,''''''''''''''''''''''''''''.........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
oc:::::llccllddxkkxkkkOOoKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXXkoooooollllllllooooollloolooooddodddooodoooooooooooodddddddddooooooodddoooooollccc;:::;;;;;;;;;;;;;;,,,,,'',,''''''.......'',;;,;;;,;,,,,,,,,,
dc:lxxxkkkO0000K00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXKkkkkkddxkkkxddxkkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkkOkxddddkOkkdodxxxdlcccloddl:coddoc:::cdddooc:lo;,,;lc,;lolllccccccccc:;,,,
OO00KXXKXXXXNXNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKOxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkodkxxkoc::okkxxOkdkOkocdOxc:dkOOOxxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlclddo::clkdclkddkkkOxc::dOOkkkxdOOOkxkOOooOKKKKKK0OkO0KKKKOxo
XXXXXNNXXXXXXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxocdoclolddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,..;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:;,'''cl:cl;:d:co:;,;lkoccccoOxxOkxkOolOKKKKKKKKKKKKXKK00O
XXXXXXXKXX00K000OOOOOOOOOOOOOOOOOkOOOOkOOOOOOOOOOOOOOOOOOkdcclc::clcc:;,,,ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......',,'..',,'......,,,..,;;;'.....,;,...'''......'.....':;;::;::;:dO0000KKKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO0d:;;;;;;;;,,'....'''''''''''''.''..........................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOOO0000000000dccccc::::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOkkOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkxxxxxxxxxxdoc;'..';:ccccccc::::;:;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000OO0OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0000000000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxdoc;;,',,,;::ccc:::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,
KKKKKKKKKK000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddddddooollooooooddddol::;,'.',;;:::;;;;;;;;,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddddooolllllloooddddddddoc::;,',,;;:::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOkOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdoooooddddddddodooddddoolc:;,'''',;;::::;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxdddddddddolllllllllooooooollc:;,'..',,;,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000K0KKKK000OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxddddddddooolllccclllllllllllloll:;'..''';;;,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,''''''''
OOkOOkkkkkkkkkkkkkkOOOOOOOOOOOO000000000KKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxddddddddoodddoooooollllccccllllll:;clllcc::;,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXKKXXKKXKKKKKKKKKKKKKKK0000000OOOOOkkkkkkkkkkkxxxxkkkOOO000K0OOOkkkkkkkkxxxdddddddxxxxdddoooolllllcc:,,o0K00O00Od:;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKXXXXXXXXXXXXXNNXXXKKKKKKKKKKKXXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxxddddddddooooooolllllc:,.'ckKKKKXXXKOd:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,'''''''''
O000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkkOOOOOO000000000OOkkkkkkkkkkkkxxxdddddooollllllllllllll:,'.';oOXXXXXXXX0o:::;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''''''''''''''
KXXXXXNNNNNNNNNNNNXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0O00000000OOkkkkxxxxkkxkkkkkxxxxxxxxxxdddoooooooooodx:'...'cOKXXXXXXK0xdddollc:,,,,,,,,,,,,,,,,,,,,'''''',,,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKKK000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxkkl'....'o0XXXXXXKOxdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK00000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOkkkkkkkkkOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxx:......;xKXXXXXXXKOxdooollodxxxddlc:;,,'',,,,,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdo,........cKKXXKKXXXXKxddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,,,;,,,,,,'''''''..'''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc'........'d0KKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdoc:;'........;dO0KKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddoooddddddddddddddddddddddddddddxxxolc:;;,,'''....,;:dOOxOKXXXXXXXK0Oxxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,'''',,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;;,;;,,...':Okxxoodk0KXXXXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooool:;,,,,,,,,,,,'..'okdooddxOKXXXXXXXNNX0xxddddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollllooooooooooooooooc;,,''''''',:cl;'.:xxdxxold0XXXXXXNNNNXkddddooooooooooooooooodddooooodddddxddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOkkxxxdollllllllllllllllllllc;,,,'''''',cokoc;oxdlllc:cxKXXXXXXNNNNOdoooooooooooloooooollllllllllooooooodddddlc:;,'''
kkkxxxxxkxxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllc:;;;;;;,,'''';lc;:clc:ccccclx000KXXXNNNKdollllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxollllllllllllol:;;;;;;;;;,,'''''.....cxxdccccxOO0KXXNNNXkolllllllllllllllllccccccccccccccccccccllcccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxxolllloooodxkxdoc;;::;;;;c;;:c;,,:dkkoccccoO00KKXNNNXkoollllllllllllllllcccccccccccccccccccccccccccc:c
dddddddddddddddddddxxxxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000Okxdooooodk0KKK0oc:::::cocxkl;;cxxdcc:;;:o000KKXXNNN0dolllllllllcclllccccccccccccccccccccccc:::::::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOOO0000000000000000000000OxooddOKXXXXKdc:::coc:oo:,cxOo::;,,'';x0KKXXXXNNXkolllllllcccccccccccccccccc::::::c::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxkkkkkkkOOOOOOO0000000000000000000kxk00KXXXXNXkc:c:cc:;;;,,;oo:;,,,'...,xKKXXXXXNX0dlllcclcccccccccccccccccccc::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOO00000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO000000000K000000kkO0KXXXXXXNX0o;:;;,,''....'';,'''.....:x0KKXXXNNKkolccccccccccccccccccccc:::::::::::::::c:::::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO00000000000000OxkOKXNNNNNNNX0l'.'...........'''........'ldd0XXKKKOxlcccccccccccccccccccc:ccc::::::::::ccc:::::::
kkkkOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO00000000000K0kodOKXNNNNNNNX0;.............'''.............;xxlkOkdlcccccccccccc:cccccc::cc::::::::::::c::::::::
kkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000K0dloxO0KXNXXXXKo.............'''..................dxxocccccccccccc:::cc::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkOOOOOOOOOOOOOOOO000000dllloodxKXXXOo,..................................lollcccccccccc::::::c::::::::::::::::::::::::::::
ddddxxxkkkOkOOOOOOOOOOOOO0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdclccccokxo:;,..................................cllcccccccccccc::::::::::::::::::::::::::::::::::
dddddxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkocldxoc::;;;;,..........................''.....,cccccccccccccc:::::::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOd:l0K0Oolc;;;'........................''',;,,,;;ccccccccccccccc::::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOl;cdxOOkkxo;,'.....................''..'';;;::::cccccccccccccc:::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOd,,okkkkkkkd:,'.....................'...'';;:::::::::ccccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOo'',;okkkkxd:,'....'....................,;;::::::::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO000OOOOl'',,cooooollc,....'...................,;;:::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKK0xxxxkKKKKKKKKKKKKOxkKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOxc,',,,;cccccllc,''.''...............',,;::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
KKKKO;;;;lKKKKOlllldKKKKKKK0OOKKxldKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddol:,,,,,,;::::clll:;,,''..........',,;cloc::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKx    .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKO;kocdKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddoolcccccccc::::::::::::clllc::;;,''.....';loodxkkxo::::::::::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;
KKKKk....,KKKKKKKKKKOOOOOKK0OOKKKKKKKKK0,.. .KKKKKKKKKKKKKKKKK0000000000000OOOOkxdoolcccc:::::::::::::::::::::::clolcccc:;,,'''.',lkOOOOkxoc::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKx    .KK: .KKKKKKKKKKKKKl.KKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolccccccc:::c:::::::::::::::::::::looolccc:;,,''''',cxxxxxxdc:::::::::::::::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKOOOOOKK: .KKKKKKKKKKKKK0OKKKKKKKKKKKKKKKKKKKK00Okxdolcccc:cc::ccccccc:::::::::::::::::::::::clollccc:;,,'''',;cccloddoc:::::::::::;::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKkodKKKKKKKKKKKKKK0xxOKKKKKKKKKK00OOkddollcc::::::::::::::cccc::::::::::::::::::::::::::;;;;;;,,''''','',;;;:col::::::::;:;;;;;;:::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllcc:c::::::::::::::::::::::::::::::::::::::::::::;'......',',,,,,'.......,;:::::::;;;;;;;;;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkkkkkkkkkkkkkkkkkkkkkOOOOO000KKKKKKKKKKKKK00Okxddollllllllllccc::::::::::::::::::::::::::::::::::::::::::::;'.......,;;;;;;;'.......';::::;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::ccccccclloodxkkkkkxdooolllccllllllllllcccc::::::::::::::::::::::::::::::::::::::::::::,........;;;;;;;;'.......,;:;;;;;;;;;;;;;;;;;;;:::::::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::cccccclllllllllllccccccccclllcccccc::::::::::::::::::ccc::::::::::::::::::::::,........';;;;;;;;'.......';;;;;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::cccccccccccccllcccccccccccccccccc::::::::::::::::::::::::::::::::::::::::;::;;,......',,;;;;;;;;,........,;;;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;......,,;,,;;,,;;;;,........',,,,,,,;;;;;;;;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::::cccccccccccccccccccccccccccccccclllllccccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;,'......',,,,,,,,;;;;;,'.......',,,,,,;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::ccccccccccccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::;;;;::;;;:::::;;;;;;;;,,;;;;,,,'..........,,,,,,,,,,,,,,,'......,,,,,,,,;;;,;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,'''...........',,,,,,,,,,,,,,,,,......',,;,,,;;;;;;;;;;;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::ccccccccccccccccccccccccccccccccccccccccccccclllllccc::::::::::::::::::;;;;;;,,,,,,,,,,,,;,,,,''................',,,,,,,,,,,,,,,,,'........',,;;;;;;;;;;::;;;;;;;;;;;;,,,,;;;;;;,,;,,,,,,,,,,,,,,,,,
:::::ccccccc::cccccccccccccccccccccccccccccccc:cclllccc:::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'...............'',,,,,,',,,,,,,,,''..........',;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccc:::::::::cccccccccccccccccccccccccccccllllcccc:::::::::ccc::::::;;;,,,;,,''','',,,,,,,,''..............',,,,,,,,,,,,,,,,''............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccccclolcccc:::c::::::ccc::::::;;;,,,;,,'',,,',,,,;;,,''.......''',,,,,,,;,;;,,,,,;;;,,''............',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccccccccccccccclllolccc:::::::::::::::::::;;;;;;;;,,'',,,,;,;;:;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,''.............'',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccllloolcc:::ccc:::::::::::::::::;;;::;;;;::::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;,,,,,'''.............',,;;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::cccccccccccccccccccclllllllllllooooccccccccccc:::cccccc::ccc::,,;;::ccc::::cc::;;;;;;;;;;;;,,;;,,,,,,;;;;;;;;;;,,,,,,,,,,'............,;;;;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,''''
::::::::::::::cccc:cccccccccccccccllllllccllllooooccccccccccclllllllcc:::cc::,,,,;:::::::::::;;;;;;;,,,,,,,,;,,,,,,;;;;;;;;;;;,;;,;;,,,,,,'''.......',;;;;;,,,,,;;;;;;,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllccllllooooollllllllllllllccc::::::::;;;;;;;;;;;:::;;:;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,',,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::ccccccccclllllllllllllllllllllllllllllccc::::::::::;;;;;;;;:;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;,;;;;;:;;;;;;;;;;:;;;;;;;;;;;;;,,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllclllllccc:::::::::::::;;;;;;;;;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,;;;;;;;;;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cllllllccllllllllcccccccccc::::;;;;;:::;:::::;;;;;;::::::;;;;;;:::::;;;;;;;;;;;:;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;,;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::ccccccc::cccllllcllcc:::::::;;;;;;;;::::::::::;:::::::::::::::::::;;;;;;;;;;;;;;:;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc:::::;;;;;;;;;;::::::::::::::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
:::::::;;;;;;;;;;;;;;;;::::::::::cccccccc:::::;;;;;;;;;;;;;;;::::::::::::::;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;::;;;,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;:;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;;:::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccllcc::::;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllcccccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;,,,,;;:;;;;;;;;;;;;,,,;;;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,;;,,,,;,,,;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccc::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;::::clcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;,;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,;;,,;;;,;,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::c::::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;::;;;;;;;;;;,,,,,,;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc;;;:::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;:::;;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,'''',''''',,,,,,,,''''''''''''''''''''''''''''....
:::;:::;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
:::;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;,,;;,,,,,,,,;;;;:;;;,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,,;,,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''.....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;:;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''..............'
;,;;;;,,,;;,,,;;;;;;;:;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,,;;,;;;;,,;;;,,',,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;,,,,,,,,,,''''',,'''',,',,,,'''''''''''''''''''''''''''''........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''''''''''''''''''''''''''''.........................
oc:::c:lllcllddxkkxkkkOOdKKXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXKkoooooolllllllloooolllloolooooddodddooodoooooooooooodddddddddooooooddddoooooollccc;:::;;;;;;;;;;;;;;;,,,,''','''''........'',;;,;;;;,,,,,,,,,,
dc:lddkkkkOO00KK00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOkkkxddxkkkxddxkkkkkxodOOkkoodxkkkkkxdxkkkddxkkOxoxkOOkdoodxkkkkddkOOOxddddkOkkdodxxxdlcccloddl:coddoc:::ldddooc:ll;,,;lc,;loollcccc:cccc:;,,,
OOO00KXKXXXXNNNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKOxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclko::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkodkookxkkoc::okkxxOkdkOkocdOxc:dkOOkkxddddxxxddocc
XXXXXXXXXXXXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxldoc:cdxocloclxlcoc;:cdl;ll'.cc..':c,'cc.,oc'.'cc',o:,::cdl;;;:cllxxlcldxo::clkdclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKKKK0OkO0KKKKOxo
XXXXXNNNNNXXXXXKKKKK00000OOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxxllxoclolddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:,''''cl:cl;:d:coc,,;lkoccccoOxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXK0K000OOOOOOOOOOOOOkkkOOkkOOkOOOOOOOOOOOOOOOOOOkdclll::clcc;;,,,ccc::,,;::;,,,';ccc:,.,;;,',;::;,..',,......',,'..''''......,,,..,;;;'.....,;,...'''......'.....':;;::;::;:dO00000KKKKKKKKKKKK
000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO0o:;;;;;;;;,,'....'''''''''''''.''..........................................................................................;cccllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOOO0000000000dccccc::::::;,,'.....'',,,'''''''''''......................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdoc;'..';:cccccc:::::;:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxddddddxxxxxdoc;,''',;ccllcc::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc:;,',,;;::ccc:::::;;;;;;;;;;,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,
KKKKKKKKKK000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,',,;::;::::;;;;;;,,,,,,,,,,,,,,,;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO0OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddooooloooooooddddol::;,'.',;;:::;;;;;;;;;;;;,,,,,;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddodooolllllloooddddddddoc::;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkkOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddolllloodddddddddddddol:;,''',,;;:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdoooooddddddddodooddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxdddddddddlllllllllooooooolc:;;,'.'',,;,,;;,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO000KKKKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkxxddddddddooolllccclllllllllllllll:;''.'',,;,,,,,,,,,,,,,,,;;;;;;,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOOOOO00000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxddddddddooooooooloollllccccllllllc;:ooolcc:;,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXXXXXKKXKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkxxxxkkkOOO000K0OOOkkkkkkkxxxxddddddddxxxdddoooolllllccc,':kK00O00Oxc;;,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXNNNNXXXKKKKKKKKKKKXXXXKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkkxxxdddddddddoooooolllllc:;..,d0KKKXXXX0x:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
0000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOkkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooolllllllllllllc,'..,cxKXXKKXXXKo:::;,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,,,'''''''''''''''''''
KXXXXXNNNNNNNNNNNNXXXXXXXXXXXKKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOO00000000OOkkkkxxxxkkkkkkkkxxxxxxxxxxdddoooooooooodxo,....,dKXXXXXXXKxdddollc:,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,,,,,,,''''''''''
NNNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkOOOkOOOO0000000000000Okkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkd,.....:OXXXXXKK0xdddddddddolc:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNXXXXXXKKK00000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxc'.....'l0XXXXXXXKOxdooolloddxxddlc:;,,'',,,;;;;,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOO0OOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdo;........,kKKKKKXXXX0xddddddxxxxxxxxxxdoc;;,,,,,,,,,,,,,;,;,,,,,,'''''''.''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxxkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc,........'lOKKKKKXXXXX0kxxxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxkxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc;;'........'cxO0KKKKKXXXXKkxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddooodddddddddddddddddddddddddddddxxolc:;;,,'''....,::okkkO0OO0KXXXK0Okxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO000000OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooodddddddddl:;;;;,,,,,'...,x0kxoldk0x::xXXXXXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,'''',,,'''''''''
OOOOOOkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkxxdooooooooooooooooooooooooooooo:;,,,,,,,,,,,''..:kdoddxk0x:;dKXXXXNX0kxxdddddddddddddddddddddddddddddddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollllooooooooooooooool;,,''''''',:coc,.;xkxxdddko::cxKXXNNNXOxdddooooodddoooooooooddddddooddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxxxdoolllllllllllllllllllc;;,,''''''':lxdl:lkxlcccclc:cco0XXNNNNKxoooooooooooloooooollllllllllooooooooddddlc:;,,''
kkkxxxxkkkxxxxxxxxxxxxxxkkkkkkkkkkxkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkxddolllllllllllllllc:;;;,,,,,'''',cc;;clc:ccollcccco0XXXXNNXOollllllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllolc;;;;;;;;;,,'''''.....:xxkdocccco0XXXXXNX0dllllllllllllllllllccccccccccccccccccccccccccccc
xxxxxxxddddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkOOOOOOOOOOOOOkxdolllloolodxkkxol:;::;;;;:;,;c:,,:dkkxxko,;ckKXXXNNNX0doollllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxxkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdooooodxOKKK0kl:::::ldcdkd;;:xkdclkx:'.,dKXXXXNNNXOdllllllllcccllcccccccccccccccc:ccccccc:::::::::
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxkkkkOOOOO0000000000000000000000OkdooddOKXXXXOl::::oo:odl,;dOkc;cc;,'..:kKXXXXNXXKxollllllcccccccccccccccccc:::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxkkkkkkkOOOOOOO00000000000000000000kdxkk0XXXXXXkc:c:cc;;;;,,lol;;,,,'....;kKKXXXNXX0dlcccclccccccccccccccccccc:::::::::::cccc:::::
xxxxkkkkOOOOOOOOOOOOOO000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOO00000000KKKKKKK00OkOOKXXXXXXXXOl;:;,,'''...'',,,'''......;d0KKXXXXXOolcccccccccccccccccccc::::::::::::::ccc::::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO0000000KKKKK0K00xkOKXXXXXXXXX0l'''...........''..........'loxKXKKK0xlccccccccccccccccccc::cc:::::::::::cc:::::::
kkkkOOOOOOOOOOOOO0000000000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000KKKKKKK0OodkO0XXXXXXXX0:............'''...............:cckOkxlccccccccccc:::::::::::::::::::::::c::::::::
kkkkkOOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOO000000KKKK0xloddxxkO0KXXKd'............''...................dkxocccccccccc::::cc::::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOOO0000000dlllooolllokOk:..................................lollccccccccc:::::ccc:::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOOO0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxlllcccc::cc:'..................................cllcccccccccccccccc:::::::::::::::::::::::::::::
dddddddxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOklcoxkdc:;;;;...........................'''....,ccccccccccccc:::::::::::::::::::::::::::::::::::
xxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOl:d0K0kl;;;,..........................'',;;,,;;cccccccccccccc::::::::::::::::::::::::::::::::::
kkkkOOOOOOO0000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOl;:odkkdc;;,.....................''..'',;;:::::cc:cccccccccc:::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOOOc,;;;xkkd:,'.....................''..'',;:::::::::ccccc::::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0K000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOx;:xxoxkkd:,'.........................',;::::::::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOO00000OOOOOOOl',codooollc,....''..................',;:::::::::::::ccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOOkkx:'',,:cccllc,'..''..............'',,;;:::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
KKKKKXXXXXKKKKKXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOO000OOOOkxddollllc'''',,::clll:,,'''..........',,:cooc::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXKKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddolccccccccccc:,''''',;::lllc:;;;,''.....'cloodxkkdl::::::::::::::::::::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKKK0000000000000OOOOkxdoollcc:::::::::::::;,,,''',,;::lllc:::::;;,''.',xOOOOOkdl:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccccc:::::::::::::;;::;;;;;::cloolccccc::;,,'';oxxxxxdoc:::::::::::::::::::::::::::::::::::::::;:;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxdolccc::::::cccccc:::::::::::::::::::::::::loolcllccc::;;,,;cclodddo::::::::::::;;::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOkddollcc::::::::::::::cccc:::::::::::::::::::::::::cc:;;;;;;:c::;,.,;;;;:lol::::::::;;;;;;;;::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKK0Okxddollllcccc:::::::::::::::::::::::::::::::::::::::::::::;,......';:::;'.......',;::::::::;;;;;;;;;;::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkxxxxxxxxxxxxxxxxxxxxkkkkkOO000KKKKKKKKKKK0OOkxddollllllllllccc:::::::::::::::::::::::::::::::::::::::::::::;'.......;::::;'........,;::;;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::ccccllodxkkkxdooolllccllllllllllcccc::::::::::::::::::::::::::::::::::::::::::::;'.......';;;;;;'.......';;;;;;;;;;;;;;;;;;;;;;:::::::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::::ccccclllllllllccccccccclllcccccc::::::::::::::::::cccc:::::::::::::::::::::;,........,;;;;;;'........;;;;;;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::cccccccccccllllcccccccccccccccccccccc:::::::::::::::::::::::::::::::::::;::;;;........,;;;;;;;,........';;;;;;;;;;;;;;;;;;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::::cccccccccccccccccccccccccccccc:::c:::c:::::::::::::::::::::::::::;;;;;;;;;;;;;;,......,,;;,,,,;;;,........',,,,,,,,;;;;;;;;;;;:::::::::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::::ccccccccccccccccccccccccccccclllllllccccc::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;,'......',,;,,,,,;;,;;'........,,,,,,,;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::;;;;:;;;;:::::;;;;;;;;,,;;;;,,,'..........,,,,,,,,,;,,,,'......',,,,,,,,;;;;;;;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,
::::::cccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,''.............',,,,,,,,,,,,,,,'......',,,,,,;;;;;;;;;;;;:::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccc::::::::::::::::::;;;;;;,,,,,,,,,,,,;,,,,''................'',,,,,',,,,,,,,,,'........',,,;;;;;;;;;::;;;;;;;;;;;,,,,,;;;;;;,,;,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccc:cclllccc:::::::::::::::::::;;;;,;;,,'',,,,,,,,,,,,,'...............'',,,,,,'',,,,,,,'''..........',;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::::ccc:::::::::cccccccccccccccccccccccccccccllllcccc:::::::::ccc::::::;;;,,,;,,'',,''',,,,,,,''.............'',,,,,,,,,,,,,,,,''............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccccclolcccc::::::::::ccc::::::;;;,,,;,,'',,,,,,,,;,,,''.......''',,,,,,,;;;;,,,,,;;;,,''............',,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloolccc::::c::::::::::::::;;;;;;;;,,'',,,,;,;;:;;,,,,,,,,,,,,,,,,,,,,,,,,;,,,;;;;,,,''............''',,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccllloolcc:::ccc:::::::::::::::::;;;::;;;;:;::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,'''.............',,;;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::ccccccccccccccccccclllllllclllloooocccccccccc:::::ccccc::ccc::,,;;;:ccc:::ccc::;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;,,,,,,,,,,'............,;;;;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''
::::::::::::::cccc:cccccccccccccccllllllccllllooooccccccccccccllllllcc:::::::,,,,;:::::::::::;;;;;;;;;;;;;,,;;,,,,,,;;;;;;;;;;,,;,;;,,,,,,'''.......,,;;;;;,,,,,;;;;;;,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllccllllodooollllllllllllllccc::::::::;;;;;;;;;;;::::::;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::ccccccccclllllllllllllllllllllllllllllcccc:::::::::;;;;;;;;:;;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;,;;;;;:;;;;;;;;;;:;;;;;;;;;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclloollllllllllllllllllllccc:::::::::::::;;;;;;;;;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
:::::::::::::::::::::::ccllllllcclllllllllccccccccc::::;;;;;;::;:::::;;;;;;::::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,,'''''
::::::::::::::::::::::::cccccc:::cccclllcllcc:::::::;;;;;;;;::::::::::;::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cccllccccc::::::;;;;;;;;;::::::::::::::::;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''
::::::::;;;;;;:;;;;;;;;::::::::::ccccccccc::::;;;;;;;;;;;;;;;::::::::::::::;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;::;;;;;:::;;:::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;;:::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;:;;::::::::::::ccccccccccclcc::::;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclcccccccllc:::;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;::;;;;;;;;:lc:::::::::::clllccccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;::;;;;;;;;;;;;,,;;;;;;;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;:::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;,,,,;,,,;;,,,;,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;:::;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cclcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,;,;;,,;;;,;,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;::;;;;;;;;;;,,,,,,;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;:::ccc:;;:::::;;;;;;;;;;::cc::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;:::;;;;;;;;;;;;;;;;;;,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;::::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,'''',''''',,,,,,,,''''''''''''''''''''''''''''....
:::;:::;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,'''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''.'....
::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;,,,,,,,,;;;;:;;;,,,,;;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''......
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;;,,,,,,;,,,,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;:;;,,,,,,,,,,,,,,,,,,,,'',,,,'''''',,,,,'''''''''''''''''''''''''''''''''''................'
;,;;;;,,,;;;,,;;;;;;;;;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,,;;;,,,,,,,;;,,,,,;;;,,,;;,,;;,,,,,,,,,,,,;;;;;;,,,,,;;;,,,,,,,,;;,,,,,,,,,''''',,'''',,',,,,'''''''''''''''''''''''''''''........................
,,,,,,,,;;;,,,,;;;;;;c;,,,,,,,,,,,;;;;,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,;;;,,,,,,,'''''''.''''''''''''''',''''''''''''''''''''''''.........................
kl:::ccllcclloxxxkkkkxO0OK0KXXXXXXXXXXXXXXXXKKXXXXXXXXXXXKkoooooolllllllloooolllloooooooddoddooooooooooooooooodddddddddooooooddddoooooollccc:::;;;;;;;;;;;;;;;;,,,,''''''''''.......',';;,;;;,;,,,,,,,,,
dc:lddxkxkOOO00K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddxkkkxddxkkkkkxoxOOkxoodxkkOkkxdxkkkddxkkOxoxkOOkdoddxkkkkddkOOkxddddkkkkdodxxxdlcccooddl:coddoc:::lddddoc:lo;,,;lc,;looolcccc:cccc:;;,,
OO00KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okkxxkkdkOkocdOxc:xOOOOkxddddxxxddocc
XXXXXNNNNXXNXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;cl'.cc..':c,'c:.,oc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkdclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKKKKKOkO0KKKKOxo
XXXXXNNNNNNNXXXKKKKK00000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxooxocoolddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:l,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:cl;:d:coc,,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXKXXKKK000OOOOOOOOOOOOOkkOOOOOOOkkOOOOOOOOOOOOOOOOOOdllllc:cclc;;,,,cccc:,,;::;,,,';ccc:'.,;;,',;::;,..',,......';,'..',''......,,,..,;;;'.....,;,...,,'......'.....':;;::;;:;:dO0000KKKoc:xkdx0KK
0000OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO0o:;;;;;;;,,,'....'''''''''''''.''..........................................................................................;cclllloodddoccldOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkOkkkkkkkkkkkOOOOOOO00000000000dcccccc:::::;,,'.....'',,,''''''''''''''...................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxxxxxxdl:;'..';:cccccc::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxddddxxxxxdlc;,''',;:cllcc::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxdoc:;,',,;::cccc::;:;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,
KKKKKKKKKK000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddddddddddddolc:;,,',,;::;::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO00OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolloooooodddool::;,'.',;;::::;;;;;;;;;;;;,,,,;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddooolllllloodddddddddoc::;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdooooodddddddoodddddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxxdddddddddlllllllllooooooolc:;;,'.'',,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKK000OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoollllccclllllllllllllllc;,'',::;;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,'''''''
kkOOkkkkkkkkkkkkkkOOOOOOOOOOOO000000000KKKKKKK000000000000OOOkkkkkkkkkkkkkkkkOOOO0KK000Okxxxdddddddddddddoooooollllccccllllll:,;dOOkxxxoc;;,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO000KKKXXXXXXXXXXXXKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkkxxxkkkOOO00000OOOkkkkkkkkxxxxdddddddxxxdddoooollllllcc;..cOK00KXXKk:;,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKXXXXXXXXXXNNNNNXXXKKKKKKKKKKKXXXKKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOkkkkkkkkkkkkxxxdddddddddooooooolllllc:,'..;oOKXXXXXXk:;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
0000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddooolllllllllllllll,'...';kKXXXXXXKo:::;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,''''''''''''''''''''
KXXXXXNNNNNNNNNNNXXXXXXXXXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxkkkkkkkkxxxxxxxxxxdddoooooooooodxxc'....'dKXXXXXXKxdddollc:,,,,,,,,,,,,,,,,,,,,,'''''',,,,,',,,,,,,,,,'''''''''
NNNNNNNNNNNNNNNNNNXXXXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkd;......cOXXXXXXKkddddxxdddolc:;,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000O0OOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl'.......'dKXXXXXXX0xdxkollodxxxddlc:;,,'',,,,;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00OOOkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........,x0KKKXXXXXklxOoloddxxxxxxxxxdoc;;,,,,,;,,,,,,,;;;,,,,,,,''''''.''''''
XXXXXKKKK000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc,.........;xO0KKKXXXXdcdkkxxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxkxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;'....'.....;cdO00KKXKlcco0Oxxxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddooddddddddddddddddddddddddddddddxdoc::;,;,,''....'okxxxxk0OkOlccoKXKOxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOOkkOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;;,,,,,,'...'xKkoldkOkllccldXNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,''''',,'''''''''
OOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkxxdooooooooooooooooooooooooooool;;,,,,'',,,,;;,'..oOxddxxkOocccldXNNXXOxxxxddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollloooooooooooooooool;,,'''''''';lxdc,'dOkddddxkxlcllxXNNNNXkxxddddddooooooooooooooooooodddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkxxdoolllllllllllllllllllc;,,,,,,'''',:ddoccdxocclldkOxcld0NXNNNX0xdooooooooooooololllllloooloooooooodddddlc:;,,''
xxkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkxddollllllllllllllll:;;;;;;;,''''';:;,;;::lldodkOO:;l0XXNXNXXkooolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxxkkkOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOxoollllllllllllolc:;;;;;;;;;,,,'''''..;xkkxdkOk'.,dKKXXXXXKkolllllllllllllllllllcccccccccccccclllllllccccc
xxxxxxxdddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdolllloollodkkOOkdl::::::oo:col;,:dkxodkOxl'..,dKXXXXXX0dllllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxkkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000O000000000OkxdoooooodxO0KKKKkl:::lxookkl,:xOxc:oxoc,'....oKXXXXXX0dlllllclcccccccccccccccccccccc::::ccc:::c::::
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO00000000000000000000000OkxdoodddOKXXXXOo::odccoo:,lkOd;:c:;,'.....'d0KKXXXX0xolllccccccccccccccccc::::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxkkkkkkOOOOOOO0000000000KKKK0000000xoxkkxOKXXXXKkl:::;;;;,,;cc:;,,,,........'oOO0XXXXKOdolcccccccccccccccccc::::::::cccccccc:::::
xxxxkkkkOOOOOOOOOOOOO0000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOO0000000KKKKK000000OodkkkO0KXXXX0o;,,''.......,,'''..........'c;xXXXXXKkolcccccccccccccccccc::::::cc:::ccccc:::::
xkkkkOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKKKKKKK00xooooddxk0XXXKo'...........''.......';'......:o:ck0Okocccccccccccccccc::cc:::::ccccccc::::::::
kkkkOOOOOOOOOOOOOO000000000000KKKK0000000000OOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000KKKKKK00dlooooooodk000;..........'''........lk:..........:xxlccccccccccc:::::c:::::cccccccccc:::::::::
kkkkkOOOOOOOOOOOOO0000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000KKKKKKOolodkkkxdooool'..........''........'dOl,,'.......;doccccc:::::::ccccc:::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOO0000000KKKkllodO000Odolc;......................,;:;:;'......:doccccc:::::::ccc:::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOOOO0000OO0000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0Odolok0000dl;,.......................,,;;;;;;,..';llcccccc:::::::cc::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxoloO000x,.......................'.',;;;:::;;;;:cccccccccc:::::::::::::::::::::::::::::::::::
xxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOkd::dxxx:........................''',;;;:::::::ccccccccc:::::::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOko;,;;;;'''''....................''',,;:::::::::cccccc:::::::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOkOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOOOOOOOOo;,,,,''''''....................'''',;:::::::::cccccc:::::::::::::::::::::::::::::::::::::::
00000000KKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOOOkl;,'''''''''.....................''';ccccc:::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOO000OOkxol,',oc'''''.....................'';cldoc::::::::::::::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOO0000000000000OOkxxxxxdol,.'c:,'''.....................';:coxkxc::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKXKKKKXXXXXKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKK000000000000OOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxddolcclooool;,'.''''''',,,''',,,,,'......',;clok00Ol::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKKKKXXXKKKKKKKKXXKKKKKKKKKKXXXXXKKKKKKKKK0000000000000000000OOOOOOOOOOOkxxddoocccccccccccclllc;,'''''''',,;;;;;;:::::;,,,,,,,;:dxO000Olc:::::::::::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKK000000000000000OOOkxdoollccc::::::::::ccc;'.'''.''''''',;:;::::::::::::::;;;;;;okkOOOkxlc::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOxddoolcccccc::::::::::::::;'........'''',::::::::::::::::::::;;;;;:cloddxxdc:::::::::::::::::::::::::::::::;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Oxxdolccccccc:ccccccc::::::::::::......''''''',;::::::::::::::::;;;;;;;;;;;:ccccllc::::::::::::::::::::::::;::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKXKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKXKKKKKK00Okxddollcc::::::::::::::cccc:::::::::::;.....''''',,;;;;;;:;:::::::;;;;;;;;;;;;;........,;::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
XKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllccc::::::::::::::::::::::::::::::::;.....'''',;;;;;;;;;;:::;;;;;;;;;;;;;;;;;'.......,;::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
xxkkkxxxxxxxxxxxxxxxxxxxxkkkkkOO00KKKKKKKKKKKK0OOkxddollllllllllcccc::::::::::::::::::::::::::::::::'........';:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......';;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::cccclloddxkkkkxdooolllllllllllllllcccc::::::::::::::::::::::::::::::::::;'.......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......';;;;;;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::cccccclllllllllllcccccccclllcccccc::::::::::::::::::ccc:::::::::::::::,.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......';;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::cccccccccclllllcccccccccccccccccccccc::::::::::::::::::::::::::::::::::;......';;;;;;;;;;;;;;;;;;,,,;;;;;;;,.......';;;;;;;;;:::::::::;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccccc::ccc::::::::::::::::::::::::::;;;;;;;;;;'.........,,,;;;;,,;,,,;,,,;;;;;;;,.......,;;;;;;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::::cccccccccccccccccccccccccccccccclllllccccc:::::ccc::::::::::::::::::::::;;;;;;;;;;;;;;;,...........,,,,,,,;;,;;,,,,,;;;;;,.......;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllccc:::::::::::::::::;;;:::::::::::;;;;;;;;,,;;;,,,............,,,,,,,,,,,,,,,,,,,,,,'......,;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllllcccc::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,'''...........',,,,,,,,,,,,,,,,,,,'........',;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccc:::::::::::::::::::;;;;;,,,,;;;;;,,,,,,,,''...............',,,,,,,,,,,,,,,,,,'..........,;;;;;;;;;;:;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::cccccc:ccccccccccccccccccccccccccccccccccccclllccc:::::::::::::::::::::;;;;;,,,,,,,,,,,,,,,,,'..............'',,,,,,,,'',,,,,,'''...........,,;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccc:::::::::cccccccccccccccccccccccccccccllllcccc:::::::::cccc:::::;;;;;;;,,'',,,,,,,,,,,,''............'',,,,,,,,,,,,,,,,,,''............',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc::::::::::::::ccccccccccccccccccccccccccccclollcccc:cc::::::cccc:::::;;;;,,;,,',,,,,,,,,;;,,''.......',,,,,,,,,;;;;,,,,,;;;,,,'.............',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccclloollccc:::c::::::::::::::;;;;;;;;,,,,,,,,;,;;::;;,,,,,,,,,,,,,,,,,,,,,,,;,,,,;;;,,,''.............',,,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccllooolccc::ccc:::::::::::::::::;;;:;;;;:::::::::::;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,'''.............',,;;;;;,,,;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllloooocccccccccccccccccccc:::cc::,,;;::ccc:::ccc:::;;;;;;;;;;;;;;;,,,,,,,;;;;;;;;;;;,,,,,,,,''...........,;;;;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''
:::::::::::::ccccc:cccccccccccccccllllllccllllooooccccccccccclllllllcc:::cc::,,,,;:::::::::::;;;;;;;;;;;;;;,;,,,,,,;;;;;;;;;;;,;;,;;,,,;,,'''.......,;;;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccclcclllllllclllllodooooolllllllllllllccc::::::::;;::::;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::cc:;:::::::cccccccccllllllllllllllllllllllllllllcccc:::::::::::::::;;;:::;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;:;;;;;;;;;;;;;;;;;,,,;;;,,,,;,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllollllllllllllllllllllccc:::::::::::::;;;;;;;;;;::::;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cclllllccllllllllcccccccccc:::;;;;;::::;::::;;;;;;:::::::;;;;;;:::::;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,'''''
::::::::::::::::::::::::ccccccccccccllllclccc:::::::;;;;;;;;::::::::::;::::::::::::::::::::;;;;;;;;;;;;;:;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
:::::::::::::::::::::::::::::::::::cclllccccc:::::;;;;;;;;;;::::::::::::::::;;::::::::::::;;::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;;::::::::::::::;;;:::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::;;;;;;;;::;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;:::::::::;:::::::;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;::::;;;::::::::cccccccccccccc::::;;;;;;,;;;;;;;;;;;;;;;;;;:;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllllccccccc::::;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc:;;;;;;::;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllccccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;;::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,;;,,,,;,,,;;,,,;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllcccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;,,,,;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;,,,;;;;;,,,,,,,,;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;,,,,;;;;;,,,,,;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;::;;;;;;;;;;;;;;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;::;;:::;;;;;;;;;;;,,,;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,,'''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,,,,,;;;;;;;;,,,,,;;;;;;;,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''..'....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;::;;:;;,,,,,,,;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,'',,,,,,,'''''''','''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;,,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''..............'
;,,;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;;,,,,,;;;;,,,,,,,;;,,,,,;;;,;,;;,,,,;,,,,,,,,,,,;;;;;;;,,,,;;;,,,,,,,,,;,,,,,,,,,''''',,'''',,',,,,''''''''''''''''''''''''''''.........................
;,,,,,,,;;;,,,,;;;;;;c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,,,,;;;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,'''''''.''''''''',''''''''''''''''''''''''''''''.........................
l:;:;ccclcclloxxxxkkxxO0x00KXXXXXXXXXXXKKXXXKKXXXXXXXXXXX0xoooooolllllllloooolllloooooooddoddooooooooooooooooodddddddddooooooddddoooooollccc::;;;;;;;;;;,,;;,,;,,,'''''''''''.......''';;,;;;,,,,,,,,,,,
dc:lddxkxxOOO00K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXXKkkkkxddxkkkxddxkkkkkxdxOOkxoodxkkOkkxdxkkkddxkkkxoxkOOkdoddxkkkkddkOOkxddddkkkkdodxxxdlcccooddl:coddoc:::cdoddoc:lo;,';lc,;looolcccc:cccc:;,,,
OO00KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKK0OxdkkxOOOkxodkxdookOoxOxdolldxollokddxc:ddccc:oxcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okxxxkxdkOkocdOx::xOOOkkxddddxxxddlcc
XXXXXNNNNNNXXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:cdkocloclxlcoc;:cdl;cl'.cc..':c,'cc.,oc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOolOKKKXXKKOkO0KKK0Oxo
XXXXXNNNNNXXXXXKKKKK000000OOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOkdolxoccllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:l,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:cl;:d:coc,,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXKKK000OOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOOOOOOOkdclllc::clc;;,,,cccc:,,;::;,,,';ccc:'.,;;,',;::;,..',,......,;,'..',''......,,,..,;;;'.....,;,...,,'......'.....';;;::;;:;:dO0000KKKKKKKKKKKKK
00O0OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO0o:;;;;;;;,,,'....'''''''''''''.'''.........................................................................................;cclllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOO00000000000dccccc::::::;,,'.....'',,,'''''''''''''''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdo:,'..';:ccccccc:::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOO00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxdddddxxxxdlc;,''',;:cllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdxxxxxxxxxxdoc:;,',,;::cccc::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,
KKKKKKKKKK000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,'',,;::;::::;;;;;;;;;;,,;;;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO00OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolloooooodddool::;,'.',;;::::;;;;;;;;;;;;;,,,;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOkOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollllllloooddddddddocc:;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdoooooddddddddodddddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddollllllllooooooolc:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000KKKK000OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxdddddddooollllccclllllllllllllllc;,'',clllc::;,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkOOkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKKKK00000000000OOOkkkkkkkkkkkkxkkkOOOO0KK000Okxxxdddddddddddddoooooollllccccclllll:''lOK0OO0Oko;;,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOO0000KKKKXXXKKXXXXXXKKKKKKKKKKKKKKKK0000000OOOOkkkkkkkkkkkkxxxkkkOOO00000OOOkkkkkkkkkxxxddddddddxxdxdooooollllccc;..,d0KKKXXXKx:;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKXXXXXXXXXXXXNNNXXXXKKKKKKKKKKXXKKKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxxddddddddddoooooollllllc;'..':xKXXXXXXKo;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
0000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllllllool;'...'oKXXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,'''''''''','''''''''
KXXXXXNNNXXNNNNNNXXXXXXXXXXXXKKKKK00000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxkkkkkkkkxxxxxxxxxxxddoooooooooodxkx;.....:kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,'''''',,,,,',,,,,,,,,,'''''''''
NNNNNNNNNNNNNNNNNNXXXXXXKKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkkkOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxd:......'l0XXXXXXKkdddxxdddolc:;,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,''''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000O0OOOOOOOOkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO0OOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........:OKKKXXXXXklxOollodxxxdolc:;,,'',,,,;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKK00000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00OOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........'dO0KKXXXXXxcdOxdddxxxxxxxxxxdoc;;,,,,,;,,,,,,,;;;,,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdlc,..........;lxOKKKKXKoclo0Oxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXKKKKK00000OOOOOOOOOOOOOOOkkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,'''.''...,lloxkO0000lccoKK0kxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdddddoododdddddddddddddddddddddddddddxdoc::;;,;;,,.....lK0kddxOOdlcccdXNXKOxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOOkkOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;;,,,,,,,'...cOkdodxkOdcccldXNNXKkxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,''''',,'''''''''
OOOOOOkOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkxxdoooooooooooooooooooooooooooooc;,,,''''',,:lo:'.cOkxxdxxkxccllxXNNNNKkxxdddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxddoooooollloooooooooooooooool:;,'''''''';cdxoc;dOxoolldkOdcld0XXXNNX0xxdddddddddoooooooooooooooodddddddddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkxxdolllllllllllllllllllll:;,,,,,,'''''clc;:ldlcclldkOOc:dKXXNNNNKkdooooolooooooololllllloooooooooooodddddlc:;,,''
xxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkxddolllllllllllllllll:;;;;;;;,,,,'''''''.,dxkxdxOk,.,xKKXXNNX0xoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxxkkkOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOxoollllllllllllloolc:;;;;;;:;cl:,:c:,,ckkkddkOd'..:xKXXXXXX0dlllllllllllllllllllccccccccccccccccllllcccccc
xxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdollllolloloodxkkOkkoc:::dxoxxd:;lkkdclxxd:'...'dKXXXXXXOdllllllllllllcccccccccccccccccccccccccccccccc
dddddddddddddddddddxxkkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0000000O000000000OkxdooooolloddkO0KKKkl:cddldxo;:xkkl;cc:;,.....'dKKXXNNX0dolllllllcccccccccccccccccccc::::ccc:::c::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO0000000000000O000000000Okddoooodddx0KXXXOl:cl:::;,;lol:;,,,'.......'o0O0XNXXKOdolccccccccccccccc::::::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOO0000000000KKKKK000000Okxdokkkk0KXXXKx:;,,''.....';,'''.........'c;dXXXNXX0xlcccccccccccccccc::::::::::ccccc::::::::
xxxxkkkkOOOOOOOOOOO000000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOO0000000KKKKK00000000OxoxkkkO0XXXXkc'.........','''.............oKkkKXXXklcccccccccccccccccc::::::cc:::ccccc:::::
xkkkkOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKKKKKKKKKK00kooooddxk0KKx,........'''''......'oc......,c,,dOOkocccccccccccccccc::cc:::::cc:::cc::::::::
kkkkOOOOOOOOOOOOOO000000000000KKKK0000000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000KKKKKKKKK00kooooooodooo:........'''''.......lKx,''.......:xxlcccccccccc::ccccc:::::::::cc:::cc::::::::
kkkkkOOOOOOOOOOOOO0000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000000KKKKKKKKK0Odloodddoooll;.........''.........lkx;;:'......:ddlccccccc::::ccc:::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOO000000000KKK0Oolloodxxolc;.....................,;::;;;;,...,lolccccccc:::::cc::::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOOOO000OOO0000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000OxlcclxOOko;......................',;;;;;;;;,,:cccccccccc:::::c:::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxl:;;lkOOx;....................''',,;;;:::::::cccccccccccc:::::::::::::::::::::::::::::::::
xxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkd:;;,;:c::'....................'''',;;:::::::ccccccccccccc:::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOkxl;,,,,,,''.....................'''',;;:::::ccccccccccc:::::::::::::::::::::::::::::::::::::
OOOOO00000000000000000000000OOOOOOOkOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOOOOOkxdoc;,,''''''......................''',;:::::cccccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOxollc:;,''''''......................''',:loolccccccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkxocccc::::,.'do,'',,,'''''.........',,;:cldddoc:::::c:::::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkxdolcccc:ccc;..,;',,,;;,,,,,,''''',,;::::ccoxxxkxl::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKXXXXXKKXXXKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKK000000000000OOOOOOOOOOOOOOOOOOOOOOOO00OOOOOkxdoooodooolccccccc:,..''',;;;;;;;;;;;;;;,,,;;::::cdkkO00dc:::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKKKKXXXKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKK000000000000000000OOOOOOOOOOOOkxxddooccccc:;,'',;ccccccc:::;'.'''',;;::::::::::::,'',,;::::lxkO00xlccc::::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000000000OOOkxdoollccc:::::::,........,::::;,,''''''';;:::::::::::::;,',;;:::::looddddlc:::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKXXXXXXKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccc:::::::::;.........,:;;;;,'''''''';::::::::::::::;;,,,;;;;;;;:clloolc:::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Oxxdolccccccc:ccccccc:::::::'.........,;;;;;,,'''''',;:;::::::::;;;;;;;;;;;;;;'...'...',:::::::::::::::::::;::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollccc:::::::::::cccccc:::::::;'........';;;;;;,,,,,;;;;;;;;::::;;;;;;;;;;;;;;;;;'........,::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllcccc:::::::::::::::::::::::::::::,........';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........';:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
ooooooodddddddddddddxxxxxkkkkkO0000KKKKKKKKKKK00Okdddollllllllllcccc::::::::::::::::::::::::::::::;'........;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'........;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::cccclloodxkkkxdooolllllllllllllllccccc::::::::::::::::::::::::::::::::;'.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,.........;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccllllllllllclllccccllllccccc::::::::::::::::::ccc:::::::::::::;,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'.........,;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccclccllllllccccccccccccccccccc:::::::::::::::::::::::::::::::::::;.........'',;;;;;;;;;,,,,,,,,;;;;;;;,,,,,.........,;;::::::::::;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
::::::::::::::::::::::::::::::cccccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::;;;;::;:;...........',,;;;,,,,,,,,,,,;;;;;;;;,,'.........,;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::ccccccccccccccccccccccccccccccccclllllccccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;'..........',,,,,,,,,,,,,,,,,,;;,,,,,'........';;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllllcc::::::::::::::::::;:::::::::::;;;;;;;;,,;;,,'..........',,,,,,,,,,,,,,,,,,,,,,,''.........,;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllllcccc:::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,'...........',,,,,,,,,,,,,,,,,,,'............',;;;;;;;;;;:::::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllcccccc:::::::::::::::;;;;;;,,,,,;;,,,,,,,,,,''............'''',,,,,,,,,,,,,,,,,............,;;;;;;;;;;:;;;;;;;:;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllcc::::::::::ccc::::::::;;;;;,,',,,,,,,,,,,,,,'...........'',,,,,,,,,,''',,,,,,,'............,;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::cc::::::::::cccccccccccccccccccccccccccccclolllccc:c:::::::ccccc::::;;;;;;;,,'',,,,,,,,,,,,''...........',,,,,,,,,,,,,,,,,,,,,.............,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc:::::::::::::cccccccccccccccccccccccccccccclollcccc:cc::::::ccccc::::;;;;;;;,,'',,,,,,,,;;,,''.......'',,,,,,,;;;;;,,,,,;;;,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloollccc:::c::::::::::::::::;;;;;;,,,,,,,;;,;;::;;,,,,,,,,,,,,,,,,,,,,,,,;,,,,;;;,,,''.............',,,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccclloooolcccc:ccc::::::::::::::::::;;:;;;;;::;:::::::::;;;;;;;;;;;;;;,,,,,,;,,,,,;;;;;,,,,''..............',,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllloooolcccccccccccccccccccc:ccc::;,;;::ccc:::cccc:::;;:;;;;;;;;;;;,,,,,;;;;;;;;;;;;;,,,,,,,,'............,;;;;;,,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccc:ccccccccccccccclllllllclllloooolcccccccccllllllllcc::ccc::;,,,;::::::::::::;;;;;;;;;;;;;;;;,,,,,;;;;;;;;;;;;;;,;;,,,;,,'''.......,;;;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccclcclllllllllllllodooooolllllllllllllccc::::::::;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::cc::::::::ccccccccccllllllllllllllllllllllllllllllcc:::::::::::::::::::::;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;:;;;;;;;;;;;;;,;;,,,,;;;,,,,;,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllollllllllllllllllllllccc::::::::::::::;;;;;;::::::::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
:::::::::::::::::::::::ccclllllllllllllllcccccccccc::::;;;;::::;:::::;;;;;::::::::;;;;;:::::;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,,,'''''
::::::::::::::::::::::::ccccccccccccllllclccc::::::::;;;;;;;::::::::::;::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,''''''''''
::::::::::::::::::::::::::::::::::ccclllccccc:::::;;;;;;;;;;:::::::::::::::::::::::::c::::::::;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;,;;;;;;;;,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;:;::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
:::::;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;:::::::::;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;::::;;;::::::::cccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;::::::;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccccc::::;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;::cc::;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::cllllllcccccc:::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;;::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;,,,;;,,,;,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;,,;;;;;;,;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,,;;;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::::::::::;;;;;;;;;::::cc:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;;;;;;;;;;,;,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::::::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,''''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,,'''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;,,,;;;;;;;;,,,,;;;;;;;;,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,;::;;:;;,,,,,,;;;,,,,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,',,,,,'''''''''','''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,'''''''''''''''''''''''''''''''''''''..............'
;;;;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;;,,,,,;;;;,,,,,,,;;,,,,,;;;,,;;;,,,;,,,',,,,,,,,;;;;;;;,,,,;;;,,,,,,,,,,,,,,,,,,,''''',,'''',,',,,,'''''''''''''''''''''''''''''........................
,,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,;,,;;;;,,,;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,'''''''.''''''''',''''''''''''''''''''''''''''''.........................
l:;:;ccclcc:loxxxxkkxxO0x00KXXXXXXXXXXXKKXXXKKXXXXXXXXXXX0xoooooolllllllllooolllloooooooddoddooooooooooooooooodddddddddooooooddddoooooollccc::;;;;;;;;;;,,;;;;;;,,,''''''''''.......''';;,;;;,,,,,,,,,,,
dc:lddxkxxOOO00K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXXKkkkkxddxkkkxddxxkkkkxdxOOkxoodxkkOkkxdxkkkddxkkkxoxkOOkdoddxkkkkddkOOkxddddkkkkdodxxxdlcccooddl:coddoc:::cdoddoc:lo;,';oc,;looolcccc:cccc:;,,,
OO00KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKK0OxdkkxOOOkxodkxdookOoxOkddlldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okxxxkxdkOkocdOxc:xOOOkkxddddxxxdolcc
XXXXXNNNNNNXXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;cl'.cc..':c,'cc.,dc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKXXKKOkO0KKK0Oxo
XXXXXNNNNNXXXXXXKKKK000OO0OOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxdolxoccllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:l,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:cl;:d:coc,,;lkocccclkxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXKKK0000OOOOOOOOOOOOkkOOOkkOOOOOOOOOOOOOOOOOOOOOkdcllcc::llc;;,,,cccc:,,;::;,,,';ccc:'.';;,',;::;,..',,......';,'..',''......,,,..,;;;'.....,;,...,,'......'.....';;;::;::;:dO0000KKKKKKKKKKKKK
0000OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOO0o;;;;;;;;,,,'....'''''''''''''''''.........................................................................................;cclllloodddxOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOO0000000000dccccc::::::;;,'.....'',,,'''''''''''''''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdo:,'..';:cccccc::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOO0000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxdddddxxxxdl:;,''',;:cllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdxxxxxxxxxxdoc:;,',,;::cccc::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,
KKKKKKKKKK00000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,',,;::;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO00OOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoolloooooodddool::;,'.',;:::::;;;;;;;;;;;;;,,,;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollllllloooddddddddocc:;,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;::::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdoooooddddddddddddddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxddddddddddollllllllooooooolc:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000KKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoollllccclllllllllllllllc;,'',clllc::;,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
kkOOkkkkkkkkkkkkkkOOOOOOOOOOO0000000000KKKKKKKK00000000000OOOkkkkkkkkkkkkxkkkOOOO0KK000Okxxxdddddddddddddoooooollllc:ccclllll:''cOK0OO0Oko;;,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOO00000KKKXXXXKXXXXXXKKKKKKKKKKKKKKKKK000000OOOOkkkkkkkkkkkkxxxkkkOOO00000OOOkkkkkkkkkxxxddddddddxxdddooooollllccc;..'o0KKKXXXKx:;,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKXXXXXXXXXXNNNNXXXXXKKKKKKKKKKXXXKKKKKKK000OOOkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxxddddddddddoooooollllllc;'..';xKXXXXXXKo;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
0000KKKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllllllool;'...'oKXXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,'''''''''','''''''''
KXXXXXNNNNNNNNNNNXXXXXXXXXXXXKKKKK00000OOOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxkkkkkkkkxxxxxxxxxxxddoooooooooodxkx;.....;kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,'''''',,,,,',,',,,,,,,'''''''''
XNNNNNNNNNNNNNNNNNXXXXXXKKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkkkkkkOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxd:......'l0XXXXXKKkdddxxdddolc;;,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000O0OOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO0OOOOOOOOOOkkkkkkkOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........;OKKKXXXXXklxOollodxxxdolc:;,,'',,,,;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKK00000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc'........'dO0KKXXXXXxcdOxdddxxxxxxxxxxdoc;;,,,,,;,,,,,,,;;;,,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdl:,..........;lxOKKKKXKoclo0Oxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOOkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxkxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,''..''...,lloxkO0000lccoKKOkxxxxxxxxxxxxxxxxxxxxdol:;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxdddddoododdddddddddddddddddddddddddddxdoc::;,,;;,,.....lK0kddxOOdlcccdXNXKOxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;;,,,,,,,'...cOkdodxkOdcccldXNNXKOxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,''''',,'''''''''
OOOOOOkOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkxxdoooooooooooooooooooooooooooooc;,,,''''',,:co:'.cOkxxddxkxccllxXNNNNKkxxdddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooool:,,'''''''',cdxdc;dOxoolldkOdcld0XXXNNX0xxdddddddddoooooooooooooooodddddddddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxddolllllllllllllllllllll:;,,,,,,'''''clc;:loccclldkkkc;dKXXNNNNKkdooooooooooooololllllloooooooooooodddddlc:;,,''
xxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOkxddooololllllllllllll:;;;;;;;,,,,''''..'.,dxkddxOk,.,xKKXXNXX0xoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOxoollllllllllllloolc:;;;;;;;:cc;,:c:,,lkkkddkOd'..:xKXXXXXX0dlllllllllllllllllllccccccccccccccllllllcccccc
xxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdollllolloloodxkkOkkdc:::dxoxxd;;lkkdclxxd:'...'dKXXXXXXOdllllllllllllllcccccccccccccccccccccccccccccc
dddddddddddddddddddxxkkkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000000O000000000OkxdooooolloddkO0KKKkl::ddldxl,:xkkl;cc:;,.....'dKKXXNNX0dollllllllccccccccccccccc::::ccccccc:::c::::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOOkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO0000000000000OOkko:c000Okddoooodddx0KXXXOl:ll:::;,;lol:;,,,'.......'o0O0XNXXKOdolccccccccccccccc::::::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkkkkOOOOOOO000000000x    .k00000Okxdokkkk0KXXXKx:;,,''.....';,'''.........'c;dXXXNXX0xlcccccccccccccccc::::::::::::::c::::::::
xxxxkkkkOOOOOOOOOOO000000000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkOOOOOOOOOO000000x      ;x00000OxoxxkkO0XXXXkc'.........','''.............oKkkKXXXklcccccccccccccccccc:::::::::::ccccc:::::
xkkkkOOOOOOOOOOOOO0000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO00000x     ,,OKKKK00kooooddxk0KKx,........'''''......'oc......,c,,dOOkocccccccccccccccc::cc..::,:c:::cc::::::::
kkkkOOOOOOOOOOOOOO000000000000KKKK00000000000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO00000Oo,  .K0KKKKK00kooooooodooo:........'''''.......lKx,''.......:xxlcccccccccc:cccccc:::::.;;.;c:::cc::::::::
kkkkkOOOOOOOOOOOOO0000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000d:lKKKKKKK0Odloodddoooll;.........''.........lkx;;;'......:dolcccccc:::::ccc::::::::';;.;::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkOOOOOOOOOOOOOOO00000000KKKK0Oolloodxxolc;.....................,;:;;;;;,...;lolccccccc:::::cc::::::::::::::::::::::::::::
ddddxxxkkkkkOOOOOOOOOOOO0000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000OxlcclxOOko;......................',;;;;;;;;,;:ccccccccccc::::c:::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxl:;;lkOOx;....................''',,;;;:::::::cccccccccccccc:::::::::::::::::::::::::::::::
xxxxkkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkd:;;,;:c::'....................'''',;;:::::::ccccccccc::ccc::::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOOOOOkxl;,,,,,,''.....................'''',;;:::::cccccccccccc:c::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOOkxdoc;;,'''''.......................''',;:::::cccccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkOOOOOOOOOOOOxoll::;,''''''......................''',:loolccccccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkxocccc::::,.'do,'',,,'''''.........',,;:cldddoc:::::c:::::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOO000000000000OOkkxdolcccc:ccc;..,;,,,,;;,,,,,,'''''',;;:::ccoxxxkxl::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKKKO;;dKKKKKKKk:lKKKKKKKKKKKKKKKKKKKKK000000000000OOOOOOOOOOOOOOOOOOOOOOOOO0OOOOOkxdoooodooolccccccc:,..''',;;;;;;;;;;;;;;,,,,;::::cdkkO00dc:::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKKKKo.'KKKKKKKKx.KKKKKKKKKKKKKKKKKKKKKKKK0000000000000000000OOOOOOOOOOOkxxddooccccc:;,'',;ccccccc:::;'.'''',;;::::::::::::,'',;;::::lxkO00xlccc::::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKOOOOOKK0d.KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000000000000000OOOkxdoollccc:::::::,........,::::;,,''''''';;:::::::::::::;,',;;:::::looddddlc:::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKx    .KK: .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccc:::::::::;.........,;;;;;,'''''''';::::::::::::::;;,,,;;;;;;;:clloolc:::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKOOOOOKK: .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Oxddolccccccc:ccccccc:::::::'.........,;;;;;,,'''''',;:;::::::::;;;;;;;;;;;;;;'...'...',:::::::::::::::::::;::::::;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKkodKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollc:::::::::::::cccccc:::::::;'........';;;;;;,,,,,;;;;;;;;;:;;;;;;;;;;;;;;;;;;;'........,::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxxdollllcccc:::::::::::::::::::::::::::::,........';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........';:::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
ooooooodddddddddodddxxxxxkkkkkO0000KKKKKKKKKKK00Okdddollllllllllcccc::::::::::::::::::::::::::::::;'........;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::cccclloodxxkxxdooolllllllllllllllccccc::::::::::::::::::::::::::::::::;'.......;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,.........;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccclllllllllllllllcccllllccccc::::::::::::::::::ccc:::::::::::::;,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'.........,;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccccllllllllcccccccccccccccccc:::::::::::::::::::::::::::::::::::;.........'',;;;;;;;;;,,,,,,,,;;;;;;;,,,,,.........,;;::::::::::;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:ccccccc::::::::::::::::::::::::::;;;;::;:;...........',,;;;,,,,,,,,,,,;;;;;;;;,,'.........,;;;::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::cccccccccccccccccccccccccccccccclllllllcccc::::::::::::::::::::::::::::::::::;;;;;;;;;;'..........',,,,,,,,,,,,,,,,,,;;,,,,,'........',;;;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,
::::::::::ccccccccccccccccccccccccccccccccccccccclllllllllcc::::::::::::::::::;:::::::::::;;;;;;;;,,;;,,'..........',,,,,,,,,,,,,,,,,,,,,,,''.........,;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllllccccc::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,''...........',,,,,,,,,,,,,,,,,,,'............';;;;;;;;;;;:::::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,
:::::cccccccccccccccccccccccccccccccccccccccccccclllllccccc:::::::::::::::::;;;;;;,,,,;;;;;,,,,,,,''............'''',,,,,,,,,,,,,,,,,............,;;;;;;;;;;::::::::::;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllcc::::::::::ccc::::::::;;;;;,,,,,,,,,,,,,,,,,'...........'',,,,,,,,,,''',,,,,,,'............,;;;;;;;;;;::;;::;;;;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
::::::ccc:::::::::cccccccccccccccccccccccccccccclolllcccc::::::::ccccc:::::;;;;;;,,,,,,,,,,,,,,,,''...........'',,,,;,,,,,,,,,,,,,,,.............,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc:::::::::::::cccccccccccccccccccccccccccccclolllccc:cc::::::cccccc::::;;;;;;,,,,,,,,,,,,;;,,''.......'',,,,,,,;;;,;,,,,;;;;,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloollccc::ccc:::::::::c:::::;;;;;;,,,,,,,,;,;;::;;,,,,,,,,,,,,,,,,,,,,,,,;,,,,;;;,,,''.............',,,,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccclllooolccccccccc:::::::::::::::::;;::;;::::::::::c:::;;;;;;;;;;;;;;;,,,,,;,,,,,;;;;;;,,,,''.............',,;;;;;,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllooooolcccccccccccccccccccc:ccc::;,;;::ccc:::cccc::::;::;;;;;;;;;;,,,,,,;;;;;;;;;;;;;,,,,,,,'...........',;;;;;;,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''''
:::::::::::::ccccc:ccccccccccccccclllllllllllloooolcccccccccclllllllccccccc::;,,,;::::::::::::;;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,;;,,;;,,'''.......,;;;;;;,,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccclcclllllllllllllodooooollllllllllllllcc::::::::;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::cc::::::::ccccccccccllllllllllllllllllloolllllllcccccccc:::::::::::::::::;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;:;;;;;;;;;;;;;,;;,,,,;;;,,,,;;;;;;,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllollllllllllllllllllllccc::::::::::::::::::::::::::::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cclllllllllllllllcccccccccc:::;;;;;::::;:::::;;;;;::::::::;;;;::::::;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,'''''''
::::::::::::::::::::::::ccccccccccccllllclccc:::::::;;;;;;;;:::::::::::::::::::::::::::::::;;;;;;;;;;;;::;;;;;;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,'''''''''
::::::::::::::::::::::::::::::::::ccclllccccc:::::;;;;;;;;;;:::::::::::::::::::::::::c:::::::::;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;;;;;,;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
:::::;;;;;;;:;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;;::::::::::;;;;::::::::;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;::::;;;::::::::cccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;::::::;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllccccccccc::::;;;:;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;::cc:;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllcccccccc::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;;::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;,,,;;;,,;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,,;;;;,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::::::::::;;;;;;;;;::::cc:::::cc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;:::::;;;;;::;;:::;:::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,''''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,,'''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,;,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;,,,;;;;;;;;,,,,;;;;;;,;,,,;,,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,;::;;:;;,,,,,,;;;;,,,,,,;,,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,',,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''....'
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''','',,,,,'''''''''''''''''''''''''''''''''''''..............'
;,,;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;;,,,,,;;;;,,,,,,,;;,,,,,;;,,,,;;,,,;,,,,,,,,,,,;;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,,''''',,'''',,',,,,'''''''''''''''''''''''''''''........................
;,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,;,,,,;;,,,;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;;,,,,,,,''''''''''''''''',''''''''''''''''''''''''''''''.........................
l:;:;ccclcclloxxxxkkxxO0x00KXXXXXXXXXXXKKXXXKKXXXXXXXXXXX0xoooooolllllllllooolllloooooooddoddooddooooooooooooodddddddddooooooddddoooooollccc::;;;;;;;;;;;;;;;;;,,,,''''''''''.......''';;,;;;;;,,,,,,,,,
dc:lddxkxxOO000K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXXKkkkkxddxkkkxddxxkkkkxoxOOkxoodxkkOkkxdxkkkddxkkkxoxkOOkdoddxkkkkddkOOkxddddxkkkdodxxxdlcccooddl:loddoc:::cdoddoc;ll;,,;oc,;looolcccc:cccc:;,,,
OO00KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXKKK0OxdkkxOOOkxodkxdookOoxOkdolldxollokddxc:ddccc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okxxxkxdkOklcdOx::xOOOkkxddddxxxdolcc
XXXXXNNNNNNXXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..'::,'cc.,dc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKKKKKOkO0KKK0Oxo
XXXXXNNNNNNXXXXXKKKK0000O0OOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxxolxdclllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:','';;;lc;cdo:,,'''cl:cl;:d:coc,,;lkocccclOxxOkxkOllOKKKKKKKKKKKKKKK000
XXXXXXXXXXXKK0000OOOOOOOOOOOOOOOOOkkOkOOOOOOOOOOOOOOOOOOOOdclll:::llc:;;,,cccc:,,;::;,,,';ccc:'.,;;,',;::;,..',,......';,'..''''......,,,..,;;;'.....,;,...,''......'.....';;;::;::;:dO0000KKKKKKKKKKKKK
00000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOo:;;;;;;;,,,'....''''''''''''.'.''.........................................................................................;cclllloodddkOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkOOOOOOOO00000000000dcccc:::::::;;,'.....'',,,'''''''''''''''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOkkkxxxxxxxxxxdo:;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxdddddxxxxdl:;,''',;:cllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdxxxxxxxxxxdoc:;,',,;::cccc::::;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKKKKKKKK00000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,',,;::;:::::;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO00000OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxkxxxxxxddddddddoolllooooodddool::;,'.',;;::::;;;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollllllloooddddddddocc:,,',,;;:::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;;:::::;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxdoooooddddddddddddddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxddddddddddollllllllooooooolc:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000KKKKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoollllccclllllllllllllolc;,'',clllc::;,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOO0000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxdddddddddddddoooooollllc:ccclllll:''lOK0OO0Okl;;,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKKXXXXXXXXXXXKKKKKKKKKKKKKKKKK000000OOOOkkkkkkkkkkkkxxxkkkOOO00000OOkkkkkkkkkkxxxddddddddxxdddoooolllllccc;..'o0KKKXXXKx;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOO0000KKKXXXXXXXXXXXXXXNXXXKKKKKKKKKKXXKKKKKKKK000OOkkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxdddddddddddooooolllllllc;'...;xKKXXXXXKo;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
0000KKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkkkOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllllllool;'..'.lKXXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,,,,'''''''''','''''''''
KXXXXXXXNXXNNNNNNXXXXXXXXXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxkkkkkkkkxxxxxxxxxxxddoooooooooodxkx:.....;kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,''',,',,,,,',,',,,,,,,'''''''''
XXNNNNNNNNNNNNNNNNXXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkkkkkkOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxd:......'l0XXXXXKKkdddxxdddolc;;,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000O0OOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........;OKKKXXXXKkoxOollodxxxdolc:;,,'',,,,;,,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO0OOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc.........'d00KKKXXXXxcdOxdddxxxxxxxxxxdoc;;,,,,,;;,,;,,,;;;,,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdl:,..........;lxOKKKKXKoclo0kxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOOkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,''..''...,lloxOO000OlccoK0kkxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddoooddddddddddddddddddddddddddddxxoc::;;;;,,,.....lK0kddxOOdlccldXXX0kxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
0OOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxdooooooooooooooooooooooooddddddddddl:;;;,,,,,,,,'...cOkdodxkOdccclxXNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,''''',,'''''''''
OOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkxxdooooooooooooooooooooooooooooo:;,,,'''''',:lo:'.cOkxdddxkxcclokNNNXX0kxxdddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooool:;,'''''''';cdxoc;dOxoolldkOoclxKXXNNNXOxxdddddddddoooooodooooooooodddddddddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxddolllllllllllllllllllol:;,,,,,,'''''clc::odlcclldkOk::kXXXNNNXKxdooooooooooooolloooooloooooooooooooddddlc:;,,''
xxkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkxddolllolllllllllllll:;;;;;;;,,,,','''''.,dxxddxOd'';kKXXXXXXOdoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOxolllllllllllllloolc:;;;;;;::cl:,:c:,,ckkkdxkOl'.'lOKXXXXXXkollllllllllllllllllllccccccccccccccllllllccccc
xxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdoolloolloloodxkkkkxoc:::dxdxxd:;lkkoclxkd;'...;kXXXXXX0xolllllllllllllccccccccccccccccccccccccccccccc
dddddddddddddddddddxxkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00O00000000000000OkxdooooolllddkO0KK0xc::ddldxo;:xkkc;cc:;'.....;OKXXXNXXkolllllllllccccccccccccccccccccccccccc::cc:::
dddddddddddxxxxxxkkkOOOOOOOOOOOOOOkkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO0000000000000O000000O00Okddoolodddx0KXXKOl:ll::::,;lol:;,,,'.......:k0OXXXXX0xollccccccccccccccc::::::::::::::cc::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOkkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkxkkOOOOOOO0000000000KKKK0000000OOkdoxkkk0KXXXKx:;,,,,''...,,''''.........;c,0XXXXXXOdlcccccccccccccccc:::::::::::::::c:::::::
xxxxkkkkOOOOOOOOOOOOOOOO0000000OOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOOO0000000KKKKK00K000000OodkkkOKXXXKk:''........'''''.............O0xOXXX0xlcccccccccccccccccc::::::ccc:::::cc:::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOOkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOOO000000KKKKKKKKK0KK000doodddxk0KKk,........'''''......:o,......;:,ckOOxlcccccccccccccccc:::::::::cc::::cc:::::::
kkkkOOOOOOOOOOOOOO000000000000KKKKK0000000000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000KKKKKKKKKK00dooooooodddc........'''''......'k0l'''......'oxocccccccccc::ccccccc::::::::cc::::c::::::::
kkkkkOOOOOOOOOOOOO0000000000000000000000000000OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkOOOOOOOOOO0000000KKKKKKKKKK0koooodddoolo;.........'''.......'xOo;;:'.....'odlcccccccccc::ccc::c::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOO0000000000KKK0xlllodddollc'....................;::::;;;'..':oolcccccccccc:ccc::::::::::::::::::::::::::::
ddddxxxkkkkOOOOOOOOOOOOO00000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0000kdlccokkxl,'.....................,,;;;;;;;;,;cccccccccccccc:cc:::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOkOkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOko:;:dOOx:......................',;;;:::::::ccccccccccccccccc:::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxl;;;;:cc,...................'''',,;::::::::ccccccccccccccc:::::::::::::::::::::::::::::::
kkkkOOOOOO00000000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOd:;,,,,,'....................'''',,;::::::cccccccccccccc::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOOOOOOko:,,,''''.....................''',,;::::ccccccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkOOOOOOOOOOOOOOOkdo:;,,''''.....................''',;:cc::ccccccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOO00OOOOOOOOOkxool:::;'.;dc...................'',:lloolc:::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOOOOOkkkkkOOOOOOOOOOOOO00000000000OOkkxddddoooc::cc,.':;''''''''''........'';ccloodoc:::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxddolcclllooooolccc:'..''',,,,,,,,,,.....',;;;:dxxxkxl:::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000OOOOOOOOOOOOOkxxddooccccc:::cccclooooollcc:;'.''''',,,;;;;;;,''',,;;:::xOOO00dc:::::cc:::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKK0OOKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOOkxdoollccc:::::::::::c:::clllllcc:;''.''''',,;;;::::;,,',,;;:::cdkkkOxl::::::::::::::::::::::::;::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKK: .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccc:::::::::::::::,....',;:::;,''''''',;;;::::::;;,',,;;;;;:clodddl::::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKK: .KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Oxxdolcccccc::ccccc::::::::::::::;........';;,''''''',;;;;;;::::::;;,;;;;;;;;:ccccc::::::::::::::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKkodKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddollcc::::::::::::cccc::::::::::::::'........,;;,'',,,;;;;;;;;;;;;;;;;;;;;;;;'.......';:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKXXKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxxoollllccc::::::::::::::::::::::::::::::::;'........';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,........;:::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
llllllllooooooooddddddxxxxxxxxkkkO00KKKKKKKKKK00Okdddollllllllllcccc::::::::::::::::::::::::::::::::;'........;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;........,;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::cccccllodxxxxdooollllllllllllllllcccc::::::::::::::::::::::::::::::::::'.......,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........,;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccccllllllllllllllllllllcccccc::::::::::::::::::cccc::::::::::::::,......';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,........,;;::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccclclllllllccccccccccccccccc::::::::::::::::::c::::::::::::::::::;........',,;;;;;;;;;,,,,,;,;;;;;;;;,.........,;;::::::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:cccccc:::::::::::::::::::::::::::::::::::;;..........',,;;;,,,,,,,,,,,;;;;;;;,........,;;;;;::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::::::cccccccccccccccccccccccccccccccclllllllcccc:::::::::::::::::::::::::::::::::::;;;;;;;;;,...........,,,,,,,,,,,,,,,,,,,;,,,'.......,;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
:::::::cccccccccccccccccccccccccccccccccccccccccclllllllllcc::::::::::::::::::::::::::::::;;;;;;;;,,;;,,,...........,,,,,,,,,,,,,,,,,,,,,,,'.......,;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,
::::ccccccccccclllllcccccccccccccccccccccccccccccllloollcccc::::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,'''...........',,,,,,,,,,,,,,,,,''.........'',;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
::::ccccccccccccllllccccccccccccccccccccccccccccclllllccccccc:::::::::::::::;;;;;;,,,,;;,;;;,,,,,,'''............''',,,,,,,',,,,,,,,,...........,;;;;;;;;;;:::::::::::;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
:::::ccccccccccccccccccccccccccccccccccccccccccccllllccccccc:::::ccccc::::::;;;;;,,,,,,,,,,,,,,,,,'............',,,,,,,,,,,,,,,,,,,,'...........;;;:::;;;;;:::;;;;;;;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
::::::ccc::::::ccccccccccccccccccccccccccccccccclllllccccccc:::::clccc::::::;;;;;,,,,,,,,,,,,,,,,''............',,,,,,,,,,,,,,,,,,,'............',;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc::::::::::::::ccccccccccccccccccccccccccccllolllccc:ccc:::::cccccc::::;;;;;;,,,,,,,,,,;;;;,,''.......'''',,,,,,;;;;,,,,;;;;,,,'............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::cccccccccccccccccccccccccccclloollccc:::c::::::::::c:::::;;;;;;,,,,,,,;;;;;::;;,,,,,,,,,,,,,,,,,,,;;;,,,,,;;;;;,,''.............',,;;,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccllloooollcccccccc:::::::::::::::::;;::::::::::::::c::;;;;;;;;;;;;;;;,,,,,,;,,;;;;;;;;;,;,,''.............',;;;;;;,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllooooolcccccccccccccccccccc:ccc::;,;;::clcc::cccc:::;;::;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,,,,,,'...........',;;;;;;,,,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,','''''
:::::::::::::ccccc:ccccccccccccccllllllllllllloooolccccccccccllllllllcccccc::;,,;;:::::::::::::;;;;;;;;;;;;;;,,,,,,;;;;;;;;;;;;;;;;;;;;;,,'''......',;;;;;;;,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllllllllooooooollllllllllllllccc:::::::;;::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::cc:::::::::cccccccccllllllllllllllllllooolllllllccccccccccc::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;::::::;;;;::;;;;;;;;;;;;;;;;,,,,;;;,,,,,;;;;;,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllolllllllllllllllllllllccc:::::::::::::::::::::::::::;;;;::::::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cclllllllllllllllccccccccccc:::;;;;::::::::::::;;:::::::::;;;;;:::::::;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,'''''''
::::::::::::::::::::::::ccccccccccccllllcccccc::::::::;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,'''''''''
::::::::::::::::::::::::::::::::::ccclllccccc:::::;;;;;;;;;;:::::::::::::::::::::::::c:::::::::;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
:::::;;;;;;;::;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;;:::::::::::;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;::::;;;::::::::cccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;:::::::;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclllcccccccc::::;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;::cc:::;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllllccccc:::;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;;::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,,;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::ccc:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;::;;:::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,''''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,,'''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;,,,,;;;;;;,;,,,;,,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,;;:;;:;;;,,,,,;;;;;,,,,,;,,,,,,,,,,,,;,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''.....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,''''''',,,,,''''''''''''''''''''''''''''''''''''''.............'
;,,;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;;,,,,,,,,;;;,,,,,;;;;,,,,,,,;;,,,,;;;,,,,;;,,,;,,',,,,,,,,,;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,,''''',,'''',,',,,,,'','''''''''''''''''''''''''........................
;,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;;,,,,,,;;,,,,,,,,,;,,,,,,;,,,,;;,,,;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;,,,,,,,,''''''''''''''''',''''',''''''''''''''''''''''''.........................
l:;:;ccclcclloxxxxkkxxO0d00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0xoooooolllllllllooolllloooooooddoddooddooooooooooooodddddddddooooooddddoooooollccc::;;,;;;;;;;,;;;;;;,,,'''''''''''.......''';;,;,;;;;;,,,,,,,
dc:lddxkxxOO000K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkkkkxddxkkkxddxxkkkkxoxOOkxoodxkkOkkxdxkkkddxkkkxoxkOOkdoddxkkkkddkOOkxddddxkkkdodxxxdccccooddl:loddoc:::cdoddoc;ll;',;oc,;looolccccccccc:,,,,
OO00KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKK0OxdkkxOOOkxodkxdookOoxOkdolldxollokddxc:ddclc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okxxxkxdkOxlcdOxc:xOOOkkxddddxxddolcc
XXXXXNNNNXXNXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdxoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..'::,'cc.,dc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKKKKKOkO0KKK0Oxo
XXXXXNNNNNNNXXXXKKKKK000O0OOOOOOOOOOOOOkkOOOOOOOOOOOOOkkOOkxclxdclllddodc:oxxlc:cc::o:lc,:dol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:'''';:;lc;cdo:,,'''cl:cl;:d:coc,,;lkoccccokxxOkxkOolOKKKKKKKKKKKKKKK000
XXXXXXXXXXKKK0000OOOOOOOOOOOOOOOOOkkOkOOOOOOOOOOOOOOOOOOOkdccll:::llc;;;,,cccc:,,;::;,,'';ccc:'.,;;,',;::;,..',,......,;,'..',''......,,,..,;;;'.....,;,...'''......'.....';;;::;::;:x00000KKKKKKKKKKKKK
00000OOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOo:;;;;;;;;,,'....''''''''''''.''''.........................................................................................;cllllloodddkOOOOO0
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOO0000000000dccccccc::::;;,'.....'',,,'''''''''''''''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdo:;'..';:cccccc:::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxddddxxxxdl:;,''',;:cllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000O00000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdxxxxxxxxxxdoc:;,',,;::cccc:::::;;;;;;;;;;;;;;;;;;,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKK00KKKK0000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,,,,;::;:::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOO0000000OOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollloooooddddol::;,''',;;::::;;;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoollllllloooddddddddolc:;,',,;;;::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdooooodddddddddddoddddoolc:;,'''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxddddddddddollllllllooooooolc:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOO000K0KKKKK00OOkkkkkkkkkkkkkkkkOOOOOOOOOkkxddddddddoollllccclolllllllllllolc;,'',:ccc::;;,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOOOkkkkkkkkkkkkkOOOOOOOOOOOOOO0000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO0KKK00Okxxxxddddddddddddoooooollllc:ccclllll:,'lOK0OO0Okl;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKKXXXXKKXXXKKXKKKKKKKKKKKKKKKK000000OOOOkkkkkkkkkkkkxxxkkkOOO00000OOOkkkkkkkkkxxxddddddddxxdddoooolllllccc;..'o0KKKXXXKd;,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXNXXXKKKKKKKKKKXXKKKKKKKK000OOkkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkxxdddddddddddoooooollllllc;'..':xKXXXXXXKo;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
000KKKKKKKXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKKK000OOOOOOOOkkkkkkkkkkkOOOOO000000000Okkkkkkkkkkkkkxxxxddddoooollllllllllllool,'...'oKXXXXXXXk:::;,,,,,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,'''''''''','''''''''
XXXXXXNXNNNNNNNNNXXXXXXXXXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxkkkkkkkkxxxxxxxxxxxddoooooooooodxkx;.....:kKXXXXXKkdddollc:,,,,,,,,,,,,,,,,,,,,,'''''',,,,,',,',,,,,,,'''''''''
0K0NNNNNNNNNNNNNNNXXXXXXXKKKKKKK0000OOOOkkkkkkkkkkkkkkkkkkkkkkOOOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxx:......'l0XXXXXKKkdddxxdddolc;;,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,'''''''''''
OKKNNNNNNNNNNNXXXXXKKK0000O0OOOOOOOOOkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00OOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddl,........;kKKKXXXXKkoxOdllodxxxdolc:;,,'',,,,;;,,,,,,,,,;;;,,,,,,'''''''''''''
XXXXXXKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00OOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdoc.........'d00KKKXXXXxcdOxdddxxxxxxxxxxdoc;;,,,,,;,,;;;,,;;;,,,,,,,'''''''''''''
XXXXXKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdl:,..........;lxOKKKKXKocloOkxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXXKKK00000OOOOOOOOOOOOOOOOkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxkxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxdlc:;,''..''...,lloxOO000OlccoK0kxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,',,,,,,,,,,''''''''
KKKK000000OOOOOOOOO00000000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdddddddddddddddddddddddddddddddddddddxdol::;,,,,,,.....lK0kddxOOdlcccdXXX0kxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
0OOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddoooooooooooooooooooooooddddddddddl:;;;,,,,,,,,'...cOkdodxkOdccclxXNXX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,''''',,'''''''''
OOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkxxdoooooooooooooooooooooooooooooc;,,,'''''',;cl:'.cOOxxxxxkxccloONNNXX0xxxdddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooool:,,'''''''';cdxdc;dOkoolldkOoclxKXXNNNXkxxdddddddddooddddddoooooooodddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOkkkkOOOOOOOOOOOOOOOOkkxddolllllllllllllllllllll:;,,,,,,''''':lc::ldlcllldkOx::kXXXNNNX0xdooooooooooooooooolllloooooooooooooddddlc:;,,''
xxkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkxddolllolllllllllllll:;;;;;;,,,,,'''''''.,dxkddxOd'';OKXXXXNXkooolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOxolllllllllllllllol:;;;;;;;:;cl:,:c:,,ckkkddkOc..'lOKXXXXXKkollllllllllllllllllllccccccccccccccllllllccccc
xxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOdoOOOOOOOOOOOkxdoollooolololdxkxxxdlc::cdxdxxd:;lkkoclxkd;'...;kXXXXXX0dollllllllllllllcccccccccccccccccccccccccccccc
dddddddddddddddddddxxkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOdl00000000000000OkxdooooolllodkO0KK0kl:cddldxo;:xkkc;cc:;,.....;OKKXXXXKkolllllllllccccccccccccccccccccccccccc::c::::
ddddddddddddxxxxxkkkOOOOOOOOOOOOOOkkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO0000000000000OOkko:c000OkddoooooddxOKXXXkl:lo::::,;lol:;,,,'.......:k0OXXXXX0xollccccccccccccccc::::::::::::::cc::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkxxxxxxxxxxxxxxkkxxxxxxxxxxxxxxxxkkxkkOOOOOOO000000000x    .000000OOkdodkkx0KXXXKd:;;,,,''''.,,''''.........:::KXXXXXXOdlcccccccccccccccc:::::::::::::::c:::::::
xxxxkkkkOOOOOOOOOOOOOOOO000000OOOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOOO000000x    .00K000000OodkkkOKXXXKk:''........'''''............,0Ox0XXX0xlcccccccccccccccccc::::::ccc:::::cc:::::
xkkkOOOOOOOOOOOOOO0000000000000000000000OOOOOkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO000000x     ',cK0KKK00doodddxOKXKk,........''''.......cl,......::,lOOOxlccccccccccccccccc::::::::cc:::ccc:::::::
kkkkOOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO00000Oo,   :OkKKKKK00dooooooodddc........'''''......,OOc''.......'oxocccccccccccccccccc:::::::::cc:::cc::::::::
kkkkkOOOOOOOOOOOOO0000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOxkO0000d::dKKKKKKK0Ooloodddoolo;.........'''.......,kOl,;;'.....'odlcccccccccc::ccc:::::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOO0000Ok000KKKK0kollooddollc'....................:c:::;;,,..':olccccccccccc:ccc::::::::::::::::::::::::::::
dddxxxxkkkkOOOOOOOOOOOOO000OOO00000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkodxxxO000Odlccldxdl,'.....................,,;;:;;;;;,;cccccccccccccc:cc:::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOkOkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxl::okOx;......................',;;;:::::::ccccccccccccccc:c:::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkko:;;:cc,...................'''',;;::::::::ccccccccccccccc:c:::::::::::::::::::::::::::::
kkkkOOOOOO000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOko:;,,,,'...................'''',;;:::::::ccccccccccccc::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOOOOOOOOko:,,''''...................'''',;;::::ccccccccccc:::::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKKKK000000OOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkdc;,''''...................'''',;::::::::cccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOO00OOOOOOOOkkkxxxxol:;'.:d;..................,;:ccc::::::::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOkkkkkkkkkOOOOOOOOOOOOO00000000000OOkkxddoooooooolc:..,;,................',:looolc::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxddollllllllllllooll,..''''''''........',;:llooddl::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000OOOOOOOOOOOOOkxxddooccccc:::cccccccclloooolc,..'''''''''.....'';::lOOkOOkl::::::::::cc:::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOkkxdoollccc::::::::::::::::ccloooolc;'..'''',,,''....',;:::lkOO00kl:::::::::::::::::::::::::::::;::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOxddoolcccccc:::::::::::::::::::cccllool;'''''''',''''....',;;;;:coxxxxl:::::::::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Oxxdolccccccc:ccccc::::::::::::::::::::;...,;,''''''''''''',,'..,,;;;;;:cloddoc::::::::::::::::::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOxddollcc::::::::::::cccc:::::::::::::::::::;'......',,,,,,;;,,,,;;;,,,;;;;,''',,,;:::;;;:::::::::::::::::::::::::;::::;;;;;;;;;;;;;;;;;;;;
000000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxdoollllccc::::::::::::::::::::::::::::::::::::::,.......';;;;;;;;;;;;;;;;;;;;;;........,;;;;;;:::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
cccllllllllloooooooodddddxxxxxkkkO00KKKKKKKKKK00Okdddollllllllllccc::::::::::::::::::::::::::::::::::::::'.......;;:::::::;;;;;;;;;;;;;;........,;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::ccccccllodxxxxdooolllllllllllllllccccc::::::::::::::::::::cc:::::::::::::::'.......;;:::::;;;;;;;;;;;;;;;;........,;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccclllllllllllllllllllllccccc::::::::::::::::::cccc::::::::::::::::;.......;;;;;;;;;;;;;;;;;;;;;;;'.......';;;;;;;;::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccclcllllllllllllcccccccccccc::::::::::::::::::c::::::::::::::::::::'......';;;;;;;;;;;,,,,,,,,;;;,........;;;;;;;;::::::::::::::;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::::::ccccccccccccccccccccccccccccccccc:ccccccc::::::::::::::::::::::::::::::::::::;'........',,,;;,,,,,,,,,,,;;;,........;;;;;;;;;;::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::::cccccccccccccccccccccccccccccccccllllllllccc:::::::::::::::::::::::::::::::::::;;;;;;;;;;,'.........',,,,,,,,,,,,,,,,,,,.......';;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
::::::ccccccccccccccccccccccccccccccccccccccccccclllllllllccc:::::::::::::::::::::::::::::;;;;;;;;,,;;,,,'...........',,,,,,,,,,,,,,,,,,,......',;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,
lcccccccccccccclllllccccccccccccccccccccccccccccclllolllccccc:::::::::::::::;;;;;;;;;;;;;;;;;;;;,,,,,'''............',,,,,,,,,,,,,,,,,,''......,;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
llccccccccccccclllllcccccccccccccccccccccccccccccllllllcccccc:::::::::::::::;;;;;;,,,,;;,;;;,,,,,,'''.............''',,,,,,',,,,,,,,,..........,;;;;;;;;;;;:::::::::::;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
cccccccccccccccccccccccccccccccccccccccccccccccccllllccccccc:::::ccccc::::::;;;;;,,,,,,,,,,,,,,,,,'.............',,,,,,,,,,,,,,,,,,,...........,;;;:::;;;;;:::;;::::;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
cccccccccc:::cccccccccccccccccccccccccccccccccccllllllcccccc:::::clccc::::::;;;;;,,,,,,,,,,,,,,,,''...........'',,,,,,,,,,,,,,,,,,,,...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc::::::::::::::ccccccccccccccccccccccccccclllolllccc:ccc:::::cccccc::::;;;;;;,,,,,,,,,,;;;;,,''.......'''',,,,,,;;;;,,,,;;;;;,,'............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::c::::cccccccccccccccccccccccccccllloollccc:::c::::::::::c:::::;;;;;;;,,,,,,;;;;;::;;,,,,,,,,,,,,,,,,,,,;;;,,,;;;;;;;,,,'.............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccclloooollcccccccc::::::::::::::::::;;::::::::::::ccc:;;;;;;;;;;;;;;;,,,,,,;,,;;;;;;;;;,,,'''.............',;;;;;;;,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllooooolcccccccccccccccccccc:ccc::;,;;::cllc::cccc:::;;:::;;;;;;;;;,,,,,,;;;;;;;;;;;;;;,,,,,''...........',;;;;;;,,,,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,','''''
:::::::::::::ccccc:ccccccccccccccllllllllllllloooolccccccccccllllllllcccccc::;,,;;::::::::::::::;;;;;;;;;;;;;;,,,,,;;;;;;;;;;;;;;;;;;;;;,,'''......',;;;;;;;,,,,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccllllllllllllloddoooollllllllllllllccc:::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;,,,,,,,,,,,,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,
:::::::ccc:::::::::ccccccccclllllllllllllllllloooolllllllcccccccccc::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;:::::;;;;;::;;;;;;;;;;;;;;;;,,,,;;;,,,,,;;;;;,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllolllllllllllllllllllllccc:::::::::::::::::::::::::::;;;;::::::::;;::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cclllllllllllllllccccccccccc:::;;;;:::::::::::::::::::::::;;;;;:::::::;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,'''''''
::::::::::::::::::::::::ccccccccccccllllccccccc:::::::;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,'''''''''
::::::::::::::::::::::::::::::::::ccclllccccc:::::;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
:::::;;;;;;;;;;;;;;::::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;::::::::::::;;;::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;::;;;::::::::cccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;::::::::;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::cclllcccccccc::::::;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;::cc:::;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllllccccc:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;;::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,,;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;:::::::::::::;;;;;;;;;;::::cc:::::ccc:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;,;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;::;;:::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,''''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;,,,,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,,'''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;,,,,;;;;;;,;,,,;,,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,;;:;;:;;;,,,,,;;;;;,,,,,;,,,,,,,,,,,,;,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''','''''''''''''''''''''''''''''''''''''''''''''''''''''.....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''','',,,,,''''''''''''''''''''''''''''''''''''''.............'
;,,;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;,,,,,,;;;;,,,,,,,;;,,,,;;;,,,,;;,,,;,,',,,,,,,,,;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,,''''',,'''',,',,,,,'','''''''''''''''''''''''''...'....................
;,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,;,,,,,,;,,,,;;,,,;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;,,,,,,,,''''''''''''''''',''''','''''''''''''''''''''''''........................
l:;:;ccclcclldxxxxkkxxO0d00KXXXXXXXXXXXKKXXXXXXXXXXXXXXXX0xoooooolllllllllooolllloooooooddoddooddooooooooooooodddddddddooooooddddoooooollccc::;;,;;;;;;;,;;;;;;,,,'''''''''''.......''';;,;;;;;;,,,',,,,
dc:lddxkxxO0000K0KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkkkkxddxkkkxddxxkkkkxoxOOkxoodxkkOkkxdxkkkddxkkkxoxkOOkdoddxkkkkddkOOkxddddxkkkdodxxxdccccooddl:loddoc:::ldoddoc:ll;',;oc,;lololccccccccc:;,,,
OO00KKKKKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXKKXKK0OxdkkxOOOkxodkxdookOoxOkdolldxollokddxc:ddclc:odcddclxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::okxxxkxdkOklcdOxc:xOOOkkxddddxxddolcc
XXXXXNNNNNNXXXXXXXXXXXXKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOxccdxoooodxcdoc:coxocooclxlcoc;:cdl;ll'.cc..'::,'cc.,dc'.'lc',o:,::cdl;,;:cllxxlcldxo::clkdclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKKKKKOkO0KKK0Oxo
XXXXXNNNNNNXXXXXKKKKKK00O0OOOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOxxclxdclllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:c,'.'co::l,,:;;l:'''';:;lc;cdo:,,'''cl:cl;:d:coc,,;lkoccccoOxxOkxkOolOKKKKKKKKKKKKKKK000
XXXXXXXXXXKKK0000OOOOOOOkOOOOOOOOOkkOOOOOOOOOOOOOOOOOOOOOkdlcll:::llc:;;,,cccc:,,;::;,,'';ccc:'.,;;,',;::;,..',,......',,'..'','......,,,..,;;;'.....,;,...''''.....'.....';;;::;::;:x000000KKKKKKKKKKKK
000000OOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOd:;;;;;;;;,,'....''''''''''...''''''.......................................................................................;cllllloodddkOOOOO0
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkOOOOOOOOO0000000000dccccccc:::::;,'.....'',,,'''''''''''''''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxxxxxdo:;'..';:ccccccc::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOO000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddxxxxxdl:;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
000000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxdxxxxxxxxxxdoc:;,',,;::ccccc:::::;;;;;;;;;;;;;;;;;;,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddolc:;,,,,,;::::::::;;;;;;;;;;;;;;;;;;;,,,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOO000000OOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddoolllooooodddool::;,''',;;::::;;;;;;;;;;;;;;;;;;;;;,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddoollllllloooddddddddolc:;,',,;;;::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdooooodddddddddddodddoooll:;;,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkxddddddddddolllllllloooooooll:;;,'.'',,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO000K0KKKKK00OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxdddddddddollllcccloollllllllllllc;,'',cccc::;;,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOkOOOOOOkkkkkkkkOOOOOOOOOOOOO00000000KKKKKKKKK0000000000OOOkkkkkkkkkkkkkkkkOOOO00KK00Okxxxxddddddddddddoooooollllc:ccclllll:,'l0K0O0OOd:;;,,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKXXXXXXXXXXXXXKKKKKKKKKKKKKKKK000000OOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkkkxxxddddddddxddddooooollllccc;..,d0KKKXXXOc;,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXKKKKKKKK000OOkkkkkkkkkkkkkkkkkOOOO00000OOOkkkkkkkkkkkkxdddddddddddooooooolllllc;'..':kKXXXXXXk:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
000KKKKKKKKXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOkkkkkkkkkOOOOOOO000000000Okkkkkkkkkkkkkxxxxddddoooollllllllllllodl,....'dKXXXXXX0l:::;;,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''','''''''''
KXXXXXNNNXXNNNNNNXXXXXXXXXXXXKKKKKK00000OOOOOOkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkxxxxkkkkkkkkxxxxxxxxxxxddoooooooooodxkd,.....cOXXXXXXKdoddoolc:,,,,,,,,,,,,,,,,,,,,,'''''',,,,,,,,,,,,,,,,'''''''''
XXNXXNNNNNNNNNNNNNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOkkkOkOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxdxo,......'o0XXXXXKOxdxkkxdddolc;;,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK0000O0OOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOkOOOOOOO00OOOOOOOOOOOkkkkOOOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdoc'........l0KKKXXXX0dlkkdllodxxxdolc:;;,'',,,,;;,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXXKKKKK0000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxdo:.........;k00KKXXXX0olxkxdddxxxxxxxxxxdoc;;,,,,,;,,;;;,,;;;,,,,,,,'''''''''''''
XXXXXKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOkkxxxxxxkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdol:,.........':ox0KKKKX0lcld0kxxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOOkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxolc:;,'.......':oodkOO00OOlccoK0kxxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,',,,,,,,,,,''''''''
KKKKK00000OOOOOOOOO00000000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxddddddddoddddddddddddddddddddddddddxxxdlc::;,,,,,'....'dKOxoxkOOoccccdXXXOxxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
0OOOOOOOOOOOOOOOOOO000000OOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooodddddddddoc;;;;,,,,,,,,'...oOxooxkOOoccclxXNXXOxxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,''''',,'''''''''
OOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkOkkxdoooooooooooooooooooooooooooooc;,,,'''''';:do:'.d0kxxxxkOkccloONNNXXkxxxxddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkkxddoooooollloooooooooooooooool:;,'''''''';cxdocckOxdoddxkOoclxXNNNNNKkxxdddddddddooddddddoooooooodddddddddoc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOkkkkkOOOOOOOOOOOOOkkkxxddolllllllllllllllllllol:;,,,,,,'''',cl:;coolooooxk0x;;xXXXNNXXOxddooooooooooooooooollloooooooooooodddddoc:;,,''
kkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkxddolllllllllllllllll:;;;;;;,;;,,,,''''''lkkkxxO0l'';kKXXXXXKxdoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOkxolllllllllllllllool:;;;;;::cdklccl:,:xkkxxO00:'..cOKXXXXX0dollllllllllllllllllllcccccccccccccclllllllcccc
xxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdoollooollloloxkkOkxdc::cxxoxxl;:xkdcdO0kd;'...,xKXXXXX0xollllllllllllllcccccccccccccccccccccccccccccc
dddddddddddddddddddxxkkkkkkkkkkkkkkxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00O00000000000000Okxdoooollllodxk0KKKOo:cddloo:,lkko:dxoc;'.....;OKXXXXXKkollllllllcccccccccccccccccccccccccccc::ccccc
dddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkkxxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO00000000000000000000000OkddooooodddOKXXX0o:cc;;;,,;c::;;;,,'.......:kkxXXXXX0xollccccccccccccccccccc::::::::::::::::::::
dddddxxxxkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkxkkOOOOOOO000000KKKKKKKKK000000OOkdodkkk0KXXXKx:,,'''.....,,,'''.........,';KK0XXXXOdlcccccccccccccccc:::::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOOOOOOO00000OOOOOOOkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOOO000KKK00KKKKKKK000000OdodxkO0KXXKk;'.........'''''............,0kx0XXX0xlcccccccccccccccccc:cccccccc:::c::::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOkkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO000000KKKKKKKKKK0KKK00xooddddxO0Kx,........''''.......;:'......::,oOOkdlccccccccccccccccc::::::::cc:::ccc:::::::
kkkkOOOOOOOOOOOOOOO00000000000KKKK00000000000OOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO000000000KKKKKKKKKKK0dlooooooooo:........''''.......'xd;.''......,dxlcccccccccccccccccc:::::::::cc:::cc::::::::
kkkkkOOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000000KKKKKKKKKK0Odlooddddool;.........'''.......,OOc,:;'.....,ddlcccccccccc:::cccc:::::::::::::::::::::::::
kkkkkkkkOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000000KKKKKOdllllddddl:....................'clc;:;;;,..,colccccccccccc::cc::::::::::::::::::::::::::::
xxxxxxxkkkOOOOOOOOOOOOOO000OOO00000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0000Oxolc:dkkkd,.....................,,;;::;;;;;;cccccccccccccc::c:::::::::::::::::::::::::::::
ddddddxxxxxxkkkkkOOOOOOOOOOOOOOOOOOOkOkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxc::lx00:.....................',;;::::::::cccccccccccccccc::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxl:;;;cl;...................''',;;::::::::cccccccccccccccc::::::::::::::::::::::::::::::
kkkkOOOOOO000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOko:;,,,,'..................'''',;;::::::cccccccccccccc::::::::::::::::::::::::::::::::::
OOOOOO0000000000000000000000OOOOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOOOOOOOOOkdl;,,'''..................'''',;;::::ccccccccccccc:::::::::::::::::::::::::::::::::::::
0000000KKKKKKKKKKKKKKKKKKK0000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkOOOOOOOOOOOOOOOOOkkkxd:,,''c;.................',,;;;:::::::ccccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOO00OOOOOOOOkkkxxdddddoc,.'lc.................,:::::::::::::::ccccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOkkkkkkkkkOOOOOOOOOOOOO00000000000OOkkxddooooollllol;'..'''............',;:c::::::::::::::::cc:c::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxddollllclllcccllllol,'.'''''.....'''',,:llcc:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000000OOOOOOOOOOOOOkxxddooccccc::::::::cccccccllllc,'.''''''''';loooddkOxc::::::::::::::::cc:::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOkkxdoollccc::::::::::::::::::::ccclll:''.'''''''',:kOOOOOOOxc:::::::::::::::::::::::::::::::::::;::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okxddoolcccccc::::::::::::::::::::::::cccoo,''''''',;;;;:oxkkkkkkxl:::::::::::::::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Oxxdolcccccc::cccccc:::::::::::::::::::::::::;,;''''',,,;;:::::cdxxxxddl:::::::::::::::::::::::::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;
KKKKKKKKXXKKKKKKKKKKKKKXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOxddollcc:::::::::::::cccc::::::::::::::::::::::::;'...'''';;;;;;,,;;;:clolc:::::;;;::;;:::::::::::::::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;
ddxkkkkkkOOOOOOO000000KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0Okxxdollllccc::::::::::::::::::::::::::::::::::::::::::::,......'';:::;'.......,;::::;;;;;;;;;;;::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
cccccccccccccccccclllllllooooodddxxxkO0000KKK00OOxxddollllllllllcccc::::::::::::::::::::::::::::::::::::::::::;'.......,;::::'.......';;;;;;;;;;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::cccccccloddooollllllllllllllllccc:::::::::::::::::::cccc::::::::::::::::::::;.......';:::::'.......';;;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccclllllllllllllllllllllllccc::::::::::::::::::ccccc::::::::::::::::::::'......';;;;;;;'........,;;;;;;;;;;;;;;;;;;::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::ccccccclllllllllllllllllllllllllcccccc:::::::::::::::ccc:::::::::::::::::::::::......',;;;;;;;,'........,;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::cccccccccclllllllllllllllllllllllllcccccccccc::::::::::::::cc:::::::::::::::::;::::;,......',;,;;,,,,,'.........';;;;;;;;;;;;;;;;;::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
:::::::::::::::c:ccccccccccccccccllllllllllllllllllllllllllccccccccccc:::::::::::::::cc:::::::::;;;;;;;;;;,,'........',,,,,,,,,,,,'.......';;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
lc:::cccccccccccccccccccclllllllllllllllllllllllllllllllllccccccccccccc:::::::::::::::::::::::::;;;;;;;,,'...........',,,,,,,,,,,,,'.......,,,;;;;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,
xdlcccccccccccclllllclllllllllllclllllllllllllllllloolllcccccccccccccc:::::::::::::::::::::::::;;;,,,'''.............,,,,,,,,,,,,,,,'......',,,;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
llllcccccccccccccllccccccllllllccccccccclllllllllllllllcccccccccccccccc:::::::::;;;,,;;;;;;;;:;;,,,''..............',,,,,,,',,,,,,,,,........',,;;;;:;:;;;;::::::::::;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
ccccccccccccccccccccccccclllllccccccccccllllccccllllllccccccccccccccccc::::::;;;;;,,,,,,,,;;;;;,,'...............'',,,,,,,,,,,,,,,,,..........',,;;::::::;;:::::::::;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
cccccccccc:::::cccccccccccccccccccccccccccccccllllllllcccccccccccclccccc::::;;;;;,,,,,,,,,,,;;;,''.............'',,,,,,;,,,,,,,,,,,,...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc::::::::::::::ccccccccccccccccccccccccccclllolllccc:ccc:::::cccccc:::::;;;;;,,,,,,,,,,;;;:;,'''.....''''',,,,,,;;;;,,,,;;;;,,,,'...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::ccccccccccccccccccccccccccccllloollccc:::c::::::c:::c::::::;;;;;;,,,,,,;;;;::::;;;;,,,,,,,,,,,,,,,,;;;,,,;;;:::;;,,''............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::::::ccccccccccccccccclllllcccclloooollcccccccc::::::::::::::::::;;::::::c::::cccc::cc:::;;;;;;;;;;,,,,,;,,;;;;;;::;;;;,'''............',;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllooooolcccccccccccccccccccccccc::;,;;::cclccccccc::::::::;;;;;;;;;;,,,,,;;;;;;;;;;;;;;;;;,,''...........',;;;;;;;;;,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,','''''
:::::::::::::ccccc:ccccccccccccccllllllllllllloooocccccccccccllllllllcccccc::;,,;;::::::::::::::::::;;;;;;;;;;,,,,,;;;;;;;;;;;;;;;;;;;;;,,,,'......',;;;;;;;;,;;;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccclclllllllllllllodoooooolllllllllllllccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;,,,,,,,,,,;;;;;;,,,;;;;;;,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,
::::::::cc:::::::::ccccccccclllllllllllllllllloooollllllccccccccccc::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;::::::;;;;::;;;;;;;;;;;;;;;;,,,,;;;;,,,;;;;;;,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllolllllllllllllllllllllccc:::::::::::::::::::::::::::;;;;::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::cclllllllllllllllccccccccccc:::;;;;:::::::::::::::::::::::;;;;:::::::::;;;;;;;;::;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,'''''''',,,,,,,,'''''''
::::::::::::::::::::::::ccccccccccccllllccccccc:::::::;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;::;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,'''''''''
::::::::::::::::::::::::::::::::::ccclllccccc:::::;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;;;;;;;;;;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
:::::;;;;;;;;;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;;::::::::::::;;;::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;:::::::::::::cccccccccccccc::::;;;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;;::::::::;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllllccccccc::::::;;;;;;;;;::;;;:;;;;;;::;;;;;;;;;;;::cc:::;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;:::;;;;;;;;;;;;;;::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cllcc:::cc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,,;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::::::::::;;;;;;;;;::::cc:::::ccc:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc;;;;::::;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;::;;:::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,,'''''''''''''''''''''''''''''...
:::;::;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;;;;,,,,;;;;;;,;,,,;,,,,,,,,,,,,;;,,,,;,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,;::;;:;;,,,,,,;;;;;,,,,,;,,,,,,,,,,,,;;,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,''','''''''''''''''''''''''''''''''''''''''''''''''''''''.....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''','',,,,'''''''''''''''''''''''''''''''''''''''''''.........'
;,,;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;,,,,,,;;;;,,,,,,,;;,,,,;;;,,,,;;,,;;,,,,,,,,,,,,;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,,''''',,'''',,,,,,,'''''''''''''''''''''''''''''...'....................
;,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,,;;;,,,,,,,,;;;,,,,,,,,;,,,,,,,,,;,,,,,,;,,,,;;,,;;;;,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;,,,,,,,,''''''''''''''''','''''''''''''''''''''''''''''''........................
dc::::cclcclodxkkkkkkxk0000KXXXXXXXXXXXKKXXXXXXXXXXXXXXXX0ddooooollllllllloooolllooooooodddooodddoooooooooooooddddddddddooooodddooooooollccc:::;;;;;;;;;;;;;;;;,,,''',,,'''''.......',,;;,;;;;;;;;;,,,,,
xc:oxxxkkkO000KK0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkkkkddkkkkxddxxkkkkxdxOOkxoodxkkkkkxdxkkkddxkkkxoxkkOkddddxkkkkddkOOkxddddxkkkdodxxxdlcccooddl:coddoc:::ldddddl:ll;,,;lc;;loolcccccccccc:,,,,
OOO0KXXXXXXNNNNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKKKKKKKK0OxdkkxOOOkxodkxdookOoxOkddlldxollokddxc:ddccc:odcddcoxo::cdo:cxllkkkkdoddxOOOkddxxdxxclodkkookookxkkoc::dkkxxOkdkOklcdOxc:xOOOkkxddddxxddolc:
XXXXXNNNNNNNXXXXXXXXXXXKKKKKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOxccdkoooodxcdoc:coxocooclxlcoc;:cdo;ll'.cc..'::,'cc.,dc'.'lc',o:,::cdl;,;:cllxxlclddo::clkoclkddkxkOdc::dOOkkkxdOOOkxkOOooOKKKKKKKOkO0KKKKOxo
XXXXXNNNNNXXXXXXKKKKKK00000OOOOOOOOOOOOkkOOOOOOOOOOOOOOOOOkxooxdccllddodc:oxxlc:cc::o:lc,cdol:,;l;;c;':lc,'.;c,:l,'.'co::l,,:;;l:'''';:;lc;cdo:;,'''cl:co;:d:coc;,;lkoccccoOxxOkxkOolOKKKKKKKKKKKKXKK000
XXXXXXXXXXXKK0000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkdllllc::llc:;;,,cccc:,,;::;,,'';ccc:,',;;,',;::;,..',,......',,'..''''......,,,..,;;;'.....,;,...'''......'.....':;;:::::;cx000000KKKKKKKKKKKK
0000O0OOOOOOOOOOOOOOOOOOOkkkkkOOOOkkkkkOOOOOOOOOOOOOOOOOOOd:;;;;;;;;,,'....''''''''''...'''''........................................................................................:cllllloodddkO0OOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkOOOOOOOOO0000000000dllccccc:::::;,'.....'',,,'''''''''''''''..................................................................................,;;;;;;;;;;;;::::::
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOkOOOOOOkkkxxxxxxxxxxdo:;'..';:ccccccc:::::::;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOO000000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxdddxxxxdl:;,''',;ccllccc:;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
000000000000000000000000OOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxdxxxxxxxxxxxxdoc:;,',,;::ccccc::::::;;;;;;;;;;;;;;;;,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
KKKKKKKKKK0000000000OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddddddoll:;,,,,,;::;:::::;;;;;;;;;;;;;;;,,,,;;;,,,,,,,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
00000000000OOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddoollooooooddddolc:;,''',;;::::;;;;;;;;;;;;,,,,;;;;;,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxddddddddooolllllloooddddddddolc:;,',,;;;::::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
OOOOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddddddolllloodddddddddddddol:;,''',,;;::::;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxdooloodddddddddddoddddoolc:;;,''',;;::::;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOkOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkxxddddddddddolllllllloooooooolc;;,'.'',,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOO0000KK0KKKK00OOkkkkkkkkkkkkkkkkkOOOOOOOOkkxdddddddddollllcccooooollllllllllc;,'';dkkkddo:;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''
OOOkOOOOOOkkkkkkkkOOOOOOOOOOOOOO0000000KKKKKKKK00000000000OOOkkkkkkkkkkkkkkkkOOOO000000Okkxxxxdddddddddddoooooollllc:ccclllll;.'cOK00KKKkc;;,,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOOOOOOO0000KKXXXXXKXXXXKKXKKKKKKKKKKKKKKKK000000OOOOkkkkkkkkkkkxxxxkkkOOO00000OOOkkkkkkkkkxxxddddddddddxddooooolllllc:'..,oOKXXXXX0l;,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
OOOOOOOOO000KKKXXXXXXXXXXXXXXXXXXKKKKKKKKKKXXKKKKKKKK000OOOkkkkkkkkkkkkkkkkOOO000000OOOkkkkkkkkkkkxxddddddddddddoooooolllll:'...':kKXXXXXXk:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''
000KKKKKKKKXXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKKK0000OOOOOOOOOkkkkkkkkkOOOOOO000000000Okkkkkkkkkkkkkxxxdddddoooollllllllllllodl,....'oKXXXXXXOc:::;,,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,''''''''''','''''''''
KXXXXXNNNNNNNNNNNXXXXXXXXXXXXKKKKKK00000OOOOOkkkkkkkkkkkkkkkkkkkOOOOO0000000000Okkkkkkkkkkkkkkkkkxxxxxxxxxxxddoooooooooodxxc'.....:OKXXXXX0ddddoolc:,,,,,,,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,,,'''''''''
XXNNNNNNNNNNNNNNNNXXXXXXXKKKKKKK0000OOOOOkkkkkkkkkkkkkkkkOOkkkOkOO000000000000Okkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxddd:........d0KXXXXK0xddkkxxddolc;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''
NNNNNNNNNNNNNNXXXXXKKK000000OOOOOOOOOkkkkkkkkkkkkkkkkkkkOOOOkOOOOOOO00OOOOO0OOOOOkkkkOOOOOkkkkkkkkkkkkxxxxxxxxxxxxxxxxxdl,........;k00KKXXXX0dldOxloddxxxdolc:;;,',,,,,,,,,,,,,,,,;;;,,,,,,'''''''''''''
NXXXXXKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOkkkkkkOOkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxdol,.........,ok0KKXXXXKdcldkkxxxxxxxxxxxxdoc;;,,,,,;,,;;;,,,;;,,,,,,,'''''''''''''
XXXXXKKKKK0000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOkkkxxxxxxkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxdlc:'.........,:cdOO000KKocclk0xxxxxxxxxxxxxxxxdolc:;;,,,,,,,,,,,,,,,,,,,,,'''''''''
XXXXXKKKK00000OOOOOOOOOOOOOOOOkkOOOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxoc:;;,'''.....'x0OxdxkOOdolcclOXOkxxxxxxxxxxxxxxxxxxxxdolc;,,,,,,,,,,,,,,,,,,''''''''
KKKKK00000OOOOOOOOO00000000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddddddddoddddddddddddddddddddddddddxxxol::;;,,,',''...'x0kolxkOOoc:cclOXX0kxxxxxxxxxxxxxxxxxxxxxxxdol:;,,''',,,,,,,,'''''''''
0OOOOOOOOOOOOOOOOOOO00000OOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxxddooooooooooooooooooooooodddddddddl:;;,,,,,,,,;c:'..oOkxxxxkOxcccloKNNX0kxxxxxxxxxxxxxxxxxxxxxxxxxxddoc:;,,''',,,'''''''''
OOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOkkkxdoooooooooooooooooooooooooooooc;,,''''''':okxl;;k0kxxxxxkOdcloOXNNNXOxxxxddddddddddddddddddddddddddxddoc;,''''''''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkxdooooooollloooooooooooooooool:;,'''''''',;oolclkkxdoooxkOOl;l0XXNNXKkxxdddddddddoodddddddddooooodddddddddlc:;,'''''''
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkkkxxddoolllllllllllllooollll:;;;,,,,,,,,';;,',,;odxddxO0O:'':kKXNXXOxddooooooooooooooooollloooooooooooooddddlc:;,,''
kkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOkkxddollllllllllllllllol:;;;;;;;::oo:;;;;',dkkkxk00o,'..;kKXXXKkdoolllllllllllllllllllllllllllllllllooooolllcc:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxxxxxxxxkkkOkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOkxoolllllllllllllldxxxxdoc:::cxOdddl;;okxddk00kl,....:0KXXXKxollllllllllllllllllllccccccccccccccllllllccccc
xxxxxxxxddddddddddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxdoollooolllllodkO0KK0xl:cxdodxc,lkko:dOkdc,'....,xKXXXXKxollllllllllllllcccccccccccccccccccccccccccccc
dddddddddddddddddddxxxxkkkkkkkkkkkkkxxxxxxxxxxxxxkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOO00000000000000000Okxdoooolloooddx0KXXKkl:oo::c;,codc;cc:;,'......;kKKXXXX0xolllllllcccccccccccccccc::::cccccccc::ccccc
dddddddddddxxxxxkkkkOOOOOOOOOOOOOOkkkkkkkkxxxxxxxkkkkkkkkkkkkkxxxxxxxxxxxkkkOOOO00000000000000000000000Okddoooodkxx0KXXXKd:;;,,,''''';,,,,''........:xoKXXXXKOdolccccccccccccccccccc::::::::::::::::::::
dddddxxxxkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkOOOOOOO000000KKKKKKKKK000000OOkxooxkkOKXXXXk:''........,''''............,0KOKXXXOdlcccccccccccccccc:::::::::::::::::::::::
xxxxkkkkOOOOOOOOOOOOOOOOOOO000OOOOOOOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkOOOOOOOOOO000KKKk....'0KK000000OxoodddxOKXXk;.........''''''....,'......'Okd0XXX0xlcccccccccccccccccc:cccccccc::cc::::::::
xkkkOOOOOOOOOOOOOOO000000000000000000000OOOOOkkkkkkkkkkkkkkkxxxxxxxxxkkkkkkkkkkOOOOOOOOO00000Kx     cxcKKK0000xloooooddxkl'.......'''''......;d:'......;:;oOOkdlccccccccccccccccc:::::c::ccc::ccc:::::::
kkkkOOOOOOOOOOOOOOO00000000000KKKKK0000000000OOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOO00000Oo,   :OkKKKKK0Odloodxxddoo;........''''.......dKd,';;'.....;dxlcccccccccccccccccc:::::cccccc:::::::::::::
kkkkkOOOOOOOOOOOOOO000000000000000000000000000OOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkOOOOOOOOOO000000d::dKKKKKKK0OolookOOOkdl,...................xXk:;::,''..,ldoccccccccccc:::cccc:::::::::::::::::::::::::
kkkkkkkOOOOOOOOOOOOO00000000000000000000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000000KKKKKOolllok00Ok;....................:oo:;;;;;;,,:llcccccccccccc::cc::::::::::::::::::::::::::::
xxxxxxxkkkOOOOOOOOOOOOOOO0000000O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0000Odlc::cx000;....................,,;;;;;;;;;;:cccccccccccccc::c:::::::::::::::::::::::::::::
dddddxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOxl::::oOK0c....................',;;;;;::::::cccccccccccccccc::::::::::::::::::::::::::::::
xxxxxkkkkkkOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOdc:;;;:cll;.................'''',;;;::::::::cccccccccccccccc::::::::::::::::::::::::::::::
kkkkOOOOOO000000000000000OOOOOOOkkkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOOOOo:;,,,,,,,,................',''',;;:::::cccccccccccccccc::::::::::::::::::::::::::::::::::
OOOOO000000000000000000000000OOOOOOOOkkkkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkOOOOOOOOOOOOOOOOko:;,,,,'',:,...............','',,;;:::::ccccccccccc:cc::::::::::::::::::::::::::::::::::::
000000KKKKKKKKKKKKKKKKKKKK0000000OOOOOOOOOOOOOOkkkkkkkkkkkkkkxxxxxxxxxxxxxxxxxxxxkkkkkkkkkkkkOOOOOOOOOOOOOOOkdo;;,,,:'.'l:...............'::cclcc:::::cc:cccccccc:::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000OOOOOkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOOOOOOO00OOOOOOOOOkxdol;;,,,,'..'''............';cclooolc:::::::::::cccc::::::::::::::::::::::::::::::::::::::::
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000OOOOOOOOOOOOkkkkkkkkkOOOOOOOOOOOOO00000000000OOOkxxkkxooll;;,,,''.'''''........''':clloddocc:::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOkxddollllloddooll;,,,,''.''''',,;;,..'',;loodxOOocc::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000000000000OOOOOOOOOOOOOOOxxddooccccc::::::cloooooll;,,,,'''''''',;;;;,',,,ckOOO0OOocc::::::::::cc:::::::::::::::::::;:::::::::::;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00000000000000OOOkkxdoollcccc:::::::::cccc:::clllc:;,,,''''''',;;;:;;;;;;:xOOOOkkocc:::::::::::::::::::::::::::::;::::::::::::;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK000Okxddoolcccccccc:::::::::::::c;.....,,::;,,,'''''',;;::::::::::cloxxxxxc::::::::::::::::::::::::::::::::::::;;;::;;;;;;;;;;;;;;;
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00Okddolccc::ccccccccc:::::::::::::::'.......;::;;;,,,,,;;;;::::::::::::clodxoc::::::::::::::::::::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;
00KKKKKKKKKKKXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00OOxddollcc::::::::::::ccccc::::::::::::::,........;::::::::::;:::::::::::,'.....,:::::;;;;::::::::::::::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;
llooooodddddxxxkkkkkkkkkO000000KKKKKKKKKKKKKKKKKKKKKK0Okxddollllcccc:::::::::::::::::::::::::::::::::,........,:::::::::::::::::::::;........;;;:;;;;;;:::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
ccccccccccccccccccccccccccccclllllooodxkOO0KK00Okxxddollllllllllcccc::::::::::::::::::::::::::::::::::;.......';::::::::::::::::::::;........;;;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccclloooolllllllllllllllllcccc:::::::::::::::::::ccc::::::::::::;,.......,::::::;;;;;;;;;;;;;;;........,;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::ccccccllllllllllllllllllllllllcccc:::::::::::::::::ccccc:::::::::::::;;.......,:::;;;;;;;;;;;;;;;;;'.......,;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::ccccccllllllllllllllllllllllllllccccc::::::::::::::::ccc::::::::::::::::;;,......';:;;;;;;,,,,,,,,,,,;;,......';;;;;;;;;:::::::::::::::::;;;;;;;;;;:::;;;;;;;;;;;;;;;;;,,
:::::::::::::::::::::::::ccccccccccllllllllllllllllllllllllllccccccc:::::::::::::::ccc:::::::::::::::;;;;;;.......'',;;;,,,,,,,,,,,,;;;......';;;;;;;;;::::::::::::::::;;;;;;;;;;::::;;;;;;;;;;;;;;;;,,,
::::::::::::::ccccccccccccccccccclllllllllllllllllllllllllllccccccccc:::::::::::::::ccc:::::::::::::;;;;;;,'.........',,,,,,,,,,,,,,,,,......';;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,
lc::::cccccccccccccccccccllllllllllllllllllllllllllllllllllcccccccccccccc:::::::::::::::::::::::;;;;;;;,,'...........',,,,,,,,,,,,,,,,,'.....';;;;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,
xdlcccccccccccclllllllllllllllllccllllllllllllllllllllllcccccccccccccc::::::::::::::::::::::::::;;,,,,''.............,,,,,,,,,,,,,,,,,,......';;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,
llllccccccllccclllllccllllllllllcccccccclllllllllllllllcccccccccccccccccc:::::::;;;,,;;;;;;;;;;;,,,''..............',,,,'',,,,,,,,,,,.........,,;;;:;;;;;;;::::::::::;;;;;,,,,;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccccccccccccccccccccccclllllccccccccccllllccccllllllcccccccccccccccccccc:::;;;;;,,,,,,,,;;;;;,,'...............'''',,,''',,,,,,,,,..........',,;;::::::;;:::::::::;;;;;;;,,,,;;;;;,,,,,,,,,,,,,,,,,,,,
ccccccccccccccccccccccccccccccccccccccccccccccllllllllcccccccccccccccccccc::;;;;;,,,,,,,,,,,;;;,,'.............'',,,,,;;,,,,,,,,,,,,...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;,,,,,,,,,,,,,,,,,,,,
ccccc::::::::::::::ccccccccccccccccccccccccccclllolllccccccc:c::cccccccc::::;;;;;;,,,,,,,,,;;;:;,'''.....'''',,,,,,,;;;;,,,,;;;;,,,''...........',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::ccccccccccccccccccccccccccllloollcccc:cc::::::cc:ccc:::::;;;;;;,,,,,,;;;;::::;;;;,,,,,,,,,,,,,,,,;;;,,,;;;:::;;,,''............',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccccclllllcccclloooollcccccccc::::::::::::::::::;;:::::c::ccccccc::cc:::;;;;;;;;;;,,,,,;,,;;;;;;::;;;;,'''............',;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,
::::::::::::::cccc:ccccccccccccccclllllllllllooooolcccccccccccccccccccccccc::;;;;::clllccccccc:::::::;;;;;;;;;;,,,,,;;;;;;;;;;;;;;;;;,,'''..........',;;;;;;;;;,;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,','''''
:::::::::::::ccccc:ccccccccccccccllllllllllllloooolccccccccclllllllllcccccc::;,,;;::::::::::::::::::;;;;;;;;;;,,,,,;;;;;;;;;;;;;;;;;;;;;;,,,''.....',;;;;;;;;;;,;;;;;,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,
:::::::::::::::::::cccccccccccccclllllllllllllodoooooolllllllllllllccc::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,;;;;;;,,,;;;;;;,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,
::::::::cc:::::::::ccccccccclllllllllllllllllloooollllllccccccccccc::::::::::::::;;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;::::::;;;;:::;;;;;;;;;;;;;;;,,,,;;;;,,,;;;;;;,,,,,,,,,,,,,,,''',,,,,,,,,,,,,,,,,
::::::::::::::::::::::ccccclllllllllllllllllllllllllccc:::::::::::::::::::::::::::;;;:::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'''',,,,,,,,,,,,,,,,
::::::::::::::::::::::::ccllllllllllllllllcccccccccc:::;;;;::::::::::::::::::::::::;;::::::::::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,,,'''''''
::::::::::::::::::::::::ccccccccccccllllccccccc:::::::;;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,''''''',,,,,,,'''''''''
::::::::::::::::::::::::::::::::::ccclllccccc:::::;;;;;;;;;;:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''
::::::::;;;;:;;:::::;;;::::::::::cccccccccc:::;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
::::::;;;;;;;;;;;;;;:::::::::cccccccccccc::::;;;;;;;;;;;;;;;;;::::::::::::::;;::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;:::::::::::::cccccccccccccc::::;;;;;;;;;;;;;:;;;;;;;;;;:::::;;;;;;::::::::;;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''
;;;;;;;;;;;;;;cl:::::::::::ccllllcccccccc:::::;:;;;;;;;::;;;;;;;;;;::;;;;;;;;;;;::cc::::;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;:lc:::::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''',,'''''
;;;::;;;;;;;;;;;;;;::::::::clllllllcccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;;;;;;;;;;;;;,,,;;;;:cllllllccccc::::::::;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;;;;;;,;,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;;;;:::::::::;;,,,,;;;;;:::cclcc::::c:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;,,,,,,;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''
;;;;;::::::::::::::;;;;;;;;;::::cc:::::ccc:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''
;;;;:::ccc:;;:::::;;;;;;;;;;:::c:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;,,,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''..
;;;;::::::;;;;;;;;;;;;;;;;;::::::;;;;;;::::::;;;;::;;::;;:::;;;;;;;;;;;,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,''''',,,'''',,,''''',,,,,,,,'''''''''''''''''''''''''''''...
:::;;:;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;,,,,;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''',,,,,''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''...
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;;;;,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''....
:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,;;;;;;;;;;;;;;;;;;,;,,,;,,,,,,,,,,,,,;,,,,;,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''....
;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;,,,,,,,,,,,,,;:;;:;;;,,,,,;;;;;,,,,,;;,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,''','''''''''''''''''''''''''''''''''''''''''''''''''''''.....
;;;;;;,,,,;;;;;;;;;;;;;,,;;;;;;;;;;;;;;,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,;;;;;;;,;;;;;;;,,,,,,,,,,,,,,,,,,,,'',,,'''','',,,,'''''''''''''''''''''''''''''''''''''''''''..........
;;;;;;,,,;;,,,;;;;;;;;;,,,,,,,,,,;;;;,,,,,,,,,;;,,,,,,,;;;,,;,,,,;;,,,,;;;;,,,;;,,,;,,,,,,,,,,,;;;;;;;;,,,;;;;,,,,,,,,,,,,,,,,,,,''''',,'''',,,,,,,'''''''''''''''''''''''''''''...'....................
;,,,,,,,;;;,,,,;;;;;:c;,,,,,,,,,,;;;;,,,,,,,,;;;,,,,,,,,;,,,,,,,,;;,,,,,,;,,,,;;,,,;;,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,,,,;,,,,,,,,''''''''''''''''','''''''''''''''''''''''''''''''........................