////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////[[[[[[[[[[[[[###[[[[[[[/////////////////////////////////////////////
/////////////////////////////////////////////[[[[[#######\xxx x:\\::\\\\##[[////////////[[[///////////////////////
///////////////////////////////////////////[[[[##:x_d3377EEEEEJEJEEE997W3@^ xx:\#[//////////////////////////////////////
/////////////////////////////////////////[[/[# H7EQzzzzJzzzJJJJEJJEEEEEEJ9E97Wd :#[/////////////////////////////////////
/////////////////////////////////////[//[[#x@7JzzJQzzzzzzzJzzJJJEEEEEEEEE9E97E999p #[[[[[[//////////////////////////////
//////////////////////////////////////[[[:HzzzzzzzzzzzQzzzzzzJEEEEEE99EEE997EEE9EE9W&:##[[///////[[/////////////////////
/////////////////////////////////////[[xHzQQQQQQQQQQzzzzQzzJJJJJEJEE99EEJ999E7EEE97W793x\##[[[[[[[[/////////////////////
////////////////////[[/////////////[[^7DQQQDQQQQQQQQzQzzJzzzJzzEEEJEJE9ENN977NE7NNNNNEE9H\#[[[[[[[[[////////////////////
////////////////////[[[[[[///////// JQDDDQDDQQQQQQQQQzJJzJJzzzJJJzJJEEE977N9979NNNN99997Wp [[[[[[[[[////////////////////
///////////////////[##[[[////////[&DDDDDDDDDDDDQQQQQQzzzzzzJJJEEJEEEE97979997W7NNN79979WWNE&[[[[[[[[////////////////////
//////////////////[[#####[[[[////xDDDDDDDDDDDDDDQQQQQQzzzzzJJJEJJEEEE777E979NW77NW799NWWN779^[[##[//////////////////////
//////////////////[##\#####[[[[[[7DDDDDDDDDDDDDDDDQQQQQzzzJEJJJJEEEE999EE9N7WW77N77WN3NN77779 ###[//////////////////////
/////////////////[[##\\\#\#####[#QDDDDDDDDDDDDDDDQQQQQzzJJJzzJJJJJEJEJE9EE9ENW7777WWppN779977p###[//////////////////////
/////////////////[[##:xx::\\\###xDDDDDDDDDDDDDDDDDDDQQzzzzzJJJJJJEJJzEEEE99977797NWNNN7777N777\#[[[/////////////////////
/////////////////[[#\xxxxxxxx\\# DDDDQQDDDDDDDDDDDDDDDDDDQQQQQzJJJEEEEJEE97E99999777W7N79979WW\##[//////////////////////
////////////////[[[##:xxxxxxx::\xDDDDd _dNJDDDDDDDDDDDDDDDDDDDDDDDQQzzEEEEEEE997979Npd&^ 9N3p##[[//////////////////////
////////////////[[[[##:xxx:xxx::\QDDD x\\\ @NzDDDDDDDDDDDDDDDQQzzJJEEE999EE997EW@xx\\\\#[NWWH###[//////////////////////
////////////////[[[[##:x x:xxx\x:7DQD@ xxxxxxx^HEQDDDDDDDDDDDDDDDDzEEE9E9999W@x########[\WW7 ###[[/////////////////////
////////////////[[[[##:xxxxxxxxx:@DDDJ xxxx xxx d7QDQDDDDDDDDDDQQQzJ9E9N&x:::\\#\\#\##3N9N####[//////////////////////
////////////////[[[[#\:::xxxxx xxxQDDDW xxxx xxx\\ @WJDDQDDDDDDQDzN@^xxx:::xx:::::\#@EEJ_#\##[[[////////////////////
/////////////////[[[####\:::xxxx::&QDDDEd xxxx xxx::::x##\x dzDDDQH^ xxxxxxxxxxxx\##\: 39EE7####[[[[////////////////////
/////////////////[###\:\\xxx :#\xx^EDDDQQJ7W3@&^ &37zQ9EEDQ73d&^xxxxx ^&&@d3pW7799E^##[[[[//////////////////////
/////////////////[###\:x:xx xx::\x pQDDDDDDDDDQQQQQQQQQDDQJx\7xx9QzQQzJJJE97999797NN7779N\##[[/[//////////////////////
/////////////////[###\:x:x xxxxxxx _d7DDDDDDDDDDDDDDDDQQDDz ##Nx\xEJJEEJJEEE99EE9N9E997JEH##[[[////////////////////////
//////////////////[###:xx xxxxxxxxxEDDDDDDDDDDDDDDDDDDDDD9x\\ zp\\xpEEJJJEE9EE9E79JEJJQQDJ ###[[[[/////////////////////
//////////////////[##\:xx x:xxx:::x NDDDDDDDDDDQEW3HNDDDDDz^:NzzzN#:7JzQQzEzzJ73@@HNzzDDDDD ##[[[[[[////////////////////
/////////////////[[##\:xxxxx\\:xxxx zQDDDDDQQ9d xxx:3DDDDDDQpQDDzz@9zDDDDDDD3\#####\NDDDDQd##[[[[[[[[///////////////////
/////////////////[[###\\\xxx:\\:xxxx^9DDDzzz@ xx:x:_DDDDDDDDDDDDDQQQDDDDDDD3\##### zDQ9@:[[#[[[[[[[[///////////////////
//////////////////[###\:xxxxx\\x xx x&H^x\x@@ xxx:\WDDDDDQDDDDQQDDDNHNQDDDD_####[[# x[#[[[###[[[[[[///////////////////
//////////////////[[##\:xxxxx:x xxx xx::\#[[\xxx:#xDDDDH^DQQD&:DDDx:7zDDD7#[[#####\##[###[[##[[[[[[/[[////////////////
//////////////////[#\:xx xxxxxx xxx\::::::#[[#:xxx#\HDDDN DDDD3 DDDx^DQDDN\#[[##\\\\:\##[[###\####[[[[[[[//////////////
/////////////////[#\:::xxxxxxxxxx x:\:xxxxx:#[#\x::\\&DDDE DDDDW&DDD HDDDP [########\\#####\####\##[[[[[[/[[////////////
//////////////////[##\#: x::::::x:xxxxxx:\#[#\xxx:&DDDJ DDDDW&DDP^3DDDP [#\\\\\########\:\###\##[[##[[[[[[///////////
/////////////////[[#\:##x xxxxxxxxx:\#:xxx:\\##xx xx&DDDJ DDDDW@DDD^pDDDD ##\\\\\::\\\:\\:xx##########[[[##[[[/////////
/////////////////[[#:x\#: xx xxx:xxxx::x:###: xx^DDDz DDDDW&DDD 7DDDQ:\##\\::\\:::xxxxxx\#####[[###[[##[[[[[[//////
/////////////////[[#:x:[#x xx xx x\:xxx xx:xDQDz QDDDp&DDDxJDDDQ:x\\::xx:xxxxxxx::\#[####[[###[[#\#[[[[#[/////
////////////////[[[#:x:[#x x xxxx:xxx::xxx:xQDDzxzQDDd@PDDxzDDDJ:x\#\:xxxx xxxxxx:x:#####[[#####\\#######[////
/////////////////[[[\xx#[\ xx xx:xx::::x:\::\EDDzxzDDD_@DDDxzDDDN:x\#\::xxx x::xxxx:#########\\\\#####[[[////
/////////////////[[/[#:\[[x x\#\\:xxxxx\#\#NDDJxJDDP^@DQJ:zDDDp:x:\\:xxxxxxxxxxxxx x:\:xx:###\##[[[[[////////
//////////////////[[[#:\[[#x xxx::xxx::\\#####\\\\\pDDJx7DQDx@DD7#zDDD_:x::::xxxx:x::x:::x xx\::xx#[[[[[/////////////
////////////////[///[[##[[#:xxxxxx:::\\#[##:\#####\xxxx_WHxWQQJ#^QD&#Nz97xxxxxxxxxx::xxxxx:::x\###\x:#[[////////////////
////////////////////[[\:#[[#xx\###x:\####[\\::\#\xx:x xxxx xxxxxxxxxx x xxxxxx::xxxx:\##[[[[#[[[//////////////////
//////////////////[[[[[##[[[[[[##\\\\#####\\\\\\\x:xx x::xxxxxxx:xxxxx x:x x:xxxxx:::::\##[[[[[//////////////////////
///////////////////[[[[[[[[[[[[[####\\\\:::xxxxx:::x xxx::\\:xxxx:x x::xx:xxx:xx x:xx:\#\\#[[///////////////////////////
///////////////[/[[[/[[[[[[[[#\###:###\::\\\\\\\xx xxxxxxx xxx xxxxxxxxx:x xxxxx:####[/////////////////////////////
///////:3H3HH3H3\ pH//#pp:[dpppWpp_#\#\:\ HHHHd&:\_Wpx::3W&x_H xxxHp&: pp@ ^HNNNH xxd3 [[ 3d/[@HHHHH3 /xHHHHH_#////////
///////[xx_zJ xx[&QE[/:DDx[EDHxxx :: xxx:&zE dDQx DDx\#zPHxHDJx#:EPW QP@ &QDd^3DQx#EPd//dPJ/[EPp \/&Dz @zJ#///////
////////// Qz\///@DE[/:DDx[JP@[#####\\#\\@DJ\\:PP^ DDx:#zDH:dDQz^xEPW QP@ @DQ x EE:[JPd//HPJ/[EP@//////&DE[/#QQ:///////
////////// QQ\///@DQNN7DD [JD9pppW\#\\:\#&QJ&&HzEx DDx:#JDd#dDQJz@EDpxxzQ& 7QE7p_#[[JPEpWEDJ/[ED9333H[/_QE_^d93[///////
////////// QQ\///dDzxx^DP [JPpx \#\\\:\@Dz@&_ #\ DDx:#JDd\dQQ NzzD3xxJQ^#\: &WDE#[ED3xx3DJ/[ED3xxxx[/_QE^^d93[///////
////////// Qz\///dPz[/xDP [JPd[#[###\\#\#&Q7\:\[[#xzQxx:Ezd#dzz :dJDd[#Jz /&EN//\DDx[EPd//dPJ/[ED_////// 9p[/#NN:///////
////////// DQ\///dPJ[/xDP [zD7dddd@####[[_J9:x\#[[#7Qp_&WN_:&79:[[^Q@/[9E /x7N^ dQ7#[7J&//@Q9/[7Jp&&&&^/ 7p[/#p3:///////
//////////#^^[///:^ [/[^^#[ ^^^^^^ [[[[[#: \:::#[[# __^x\:\: #///::/# :[/# x[//xx#//#xx//:xxxxxx:/#x://[xx#///////
/////////////////////////////[[[[[[[[[[[[[[[[\x::#[[#\\#[[##[[##[///////////////////////////////////////////////////////
////////////////////////[////[[[[[[####[[##[[[#\:\[[[[[////[[[[[[///////////////////////////////////////////////////////