/KQQQQQQQQQKQQK##KQQQSSSQQ/
/^///CKK#########RRRRRRRR#BBBRRRRBR##R#Q7~QQQQQQQQQQQQQQQQQSQQSSQSSOQ/^~%
^^/^~S^3#KG^##R^G#R/O#R#/###73##K/Q##7(#t(QQQQQQSSQQQSSSSetC(%O7(eSOO^^^
///^#~eR#K##RR##RRRBRRRRR##KRR#######QQSttQSQQQQSSQQSSSSS%C7(se(CSSGee6#
/^~/^^^( ^ /^ (/(/~~^~~^^^^^OOGGO@(/^    /QSQQQQQQQQQQQQQG7GSGSOOeO~
//~/^^^t^^^///(/~~/~^(/^^^^^6(t(6Q/(^        (77777t7t(//~~/(~~////~^
//~^//^(^^^(//(/(//(^t/^/^^^s(ttsQ/(^        %CCCss666Ct3%77O666C66s(
/^(//~^(^^^(//(/~~~~^(~^^^^^s%%%C#/(/        76s66666CCCC3s3ssss66ss(
/^~///^t^^^(//(/~~~/^(~^^^^^s3CCOQ/(/        76s66s6C6s3CC%sssss6s6s~
/^///~^(^^^///~~(///^~~^^^^^6~(~C#/(^        7s666s666%3Os%7O6s6666s/
/^///~^(^^^~//(~/~~~^/~/^^^^s666sR/(^   ^^   (CCsOOsOOC3s6%CGOOOOOOO///(
(^///(^(^~^~/^~/~//(^(~//^^^OR###R//^ ^///// ^///^     ^^^^^^^  /////^^/
(^//^~^(^~^~/^/~////^//^^^^^^^^^^^^/^ ^^^^ //~s63t(33%%%%%%777t(t(t7tsK#RG
(^///~^(^~^///~//~~~^~//^^^^^^^^^^^/^ //^ ///     ^      ^^^^^ ^/^^//
(^//^/(( (^//^~~~~/~^~~(^^^^^^^^^^^/^ //^ ^//  /(((((((((((((((((~~~~(((
~///^(/(^/^//^//^/^^^/^/^^^^^^^^^^^// /// ^//   ^^^^^^^(((((((~~(~~/ ///
(///^(~(^^^^^^^^^^^^^^^^^^^^^^^^^^^// ^/^  //   /^^/////77%%%t(////~////
~~//^(/(^^^~^^~((//^~(~^^^^^^^^^^^^/^ ^//  //    ^//^/~(3%%%%%(//////^/
(///^~~(^^^//^(~//~^~//^^^^^^^^^^^^/^  // ^//^  //^~~(((3%%33%(///////^^
~///^(~(^^^~/^/~/~/^/~~//^^^^^^^^^^/^  //((//^  ///~~~~~33333%(////////^
(~~/^(~(^^^//^/(//^^~(~^^^^^^^^^/^^/^  //////^  /////~~~7((((t(////////
(/~/^(/(^^^~(^~/~///(/~^^^^^^^^^(/^/^  /^////   //////////(((//////////
(///^(((^^^~~^~/~/~//~~(^^^^^^^^//(/^   // //   ////////^t((((^////////
(///^(/t^^^/~^/(///^~//(^^^^^^^^/////   ////~   /////////((~(/^////////
(///^~((^^^~/^/~(/~////(^^^^^^^^~/(//    ///    /////////~(~/^/////////
(///^~/(^(^~///~~/~///((^^^^^^^^~///~     ~/    //////~~///////////////
(///^/~(^(^~(^(~~////~/~^^^^^^^^~/(//     ^     //////~~~~~/~/~////////^
(///^~~(^(^~/^(/~~/^~(/(^^^^^^^^~/(/~           ////~~~~~~~~/~/~///////
(///^(~~^~ (/^(/~/(/(//~^^^^^^^^~/~//          ^(///^/~~~~~~~~////^/^^/
t(^^/((/^(^/~^(/~/~//(~(^^^^^^^^(/~//          ^  ^///^//~~~~///^^//^^/
/ ^^^ ^^^^^^^^//^^^^^^^^^^^^^^^^^^^/^          ^///////^^//^^^^^^^^^/^/^
^/~~~~((~~((((((((((((((((~~~~~~(((~/          ///~~~~~(((((((((~(%7((((

                                                                     ^
   ^  ^   73/             ^  ^^^^^^////^//^//%%%C(/^ //^^^^^^^ ^^^   ^^^
      ^///%%(^^^^^^^^^                     (     ^    ^              ^^^
                                                                     ^^
76%%333%%%%7t(((tt7%77%6CC       ~(((~((((^
#OR@@@@@@@@@@@@@@@@@@@B##7    /((((((/(((((((    QSeOCSSSSS/
GO@Q@@@@@@@@@@@@@@@@@#@@K(   ~((((((((((((((((   SeesGSSSSS/
OO@@KK@@@@@@@@@@@@@BB@@R#%  /((((((((((((((((((  SeOOGeSSQQ/^//^^^^^
GO@@@@OB@@#G@@@@@RQ@@@OQK%  ((((((((((((((((t((  eOOOGSSSQQ//^^^////
eG@@@@@@6Q@@@@@BS@@@QR%@Q%  (((((((((((((((((((~ GGGeeSeSSQ^  ^/~((~/////^
SG@@@@/#@K(3%s%#@@@@e@SKQ%^ (((((((((((((((((((/ eeeSeSSSSQ^^//~(((~
ee@@@@3#@@@e#G@@@@@@e@G#Q%^ ((((((((((((((((t((  SeSSSSSSSQ ^^/////^
SG@@@@@@@@@@R#R@@@@@S@3#S7^  t((((((((((((((((/  QSSSSSSSSQ
SG@@@@@@@@@R#R3S@@@@#Q6#e7^   (((((((((((((((/   QQKQQQQQQK
eG@@@@@@RGKKRRO@R@@@K@B@Ot^    ~7(((((((((t(
GG@@@R#Ge6SeRB^///(@@s%BC^/        /(((//              ~O  ^ ^^^         /
GG@@#sBQKQ##@RGRRR##K@BB%^^                            t6 ^^^^^^ ^ ^ ^ ^^
GG@@RRBB##B@@R%s66Cs^%#@C( /^//////////^/^             Oe ^ ^^^^^^^ ^^^
OQRRRR@BBBBBBR@@@@@@@R@@e7^OOtOOOOOOOOOOOOOOOOsOOOs7s/ OO ^^^ ^^ ^^^^((^^^
~7ttt%tt((t((tt7%%33CsCCC//OOOOOOGOsOOOOOOOOOs6OOOsOG~ OO ^^^^^^^^^^/t/^^^
                           OOOOOC77%sOOOOOOs6%t%OOOOG/ OO^^  ^^^^^^^/^^^^
                           OOOOOOO3OOOOOOOOOOOCOsOOOO/ OG^^^  ^ //^^^^^^^^
Os%66e6sssO%sGOO%sG6s6s6%~ OOOOOOOCOOOOOOOOOOOOsCOOOs/ OG/^^^^(~~~/~(~^^^
sOsOsOssOsssOOOOOsOsOsOss~ GOOOOOOOOOOOOOOOOOOOOCOOsO (~G//^^^ /////~/^^/^
OsssGGC6s3OCG6Cs6seO6O%ss~^OOOOOOOOGOGGGOOOOOOOsCOOsG tGS~^^^^^^ ^^^^^^^^^
OsssGGC6s7OsGs6sC6GO6s7OO/^OGGGGOGOGOOGGeOOOOOOssOOOG tSSt        ^^^^^^//
Os6sC3GOG7s6Oss6s6CG6O%ss/^OGGGGGGOOOOO/~GGOOOOOOOOOO (SSeeKQQQSSSSSSSeSeC
OsOssCOOGOssOOsOssCGOOGsO/^GGGGGGGGOOOOOO%%OOOOOOOOsO /eSSSOQQQSQSQeSQSSOC
6ss6CeCC6ssGsCCG%sGCCC6Ce/^GGGGGOGGOeCGO6%%GOGOOOOOOO  RSeSOQSSSQGeQGSSeG3
ss%OsG6ss66eO66OCsOC666Ce^/GGOGGGG6GGCGOsOCOCOOOOOOOs    /%G@@R##ss#RBRQ(
OOCO6G6ssssCOGCO6sG6sssss^/GGGGGGeCOGCOG6OCO3OOGsOOOs