@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@GeGGGGGGOOGQ6ss666CCC3%%%%%7(%%77%77QSSSSSeeeGGGGGOOOOOOssGsGC63CCCC33CC@
@SGGGGGGG73////^^ 3C333%%%%%%7%t%7t7tSSSSSSSeeGGGGOGOOOsC/(/^^  ~ C33333C@
@eeGeGGGC7(/~//^^^~CC33%3%%%7%77777%tSSSeSSSSeGeeGGOOOOO/(/        3%33C3@
@SeGeGOGsG~(~/^     (C%33%%%77t77777tQSSSSSSSeeeeGGGGOOC~//         C3%33@
@SSSSSOGGtO~//      ^CC%3%%%%%77777t7QSSSSSSSSSeSeGGGOO/%///        ^%%33@
@SSSSQSS6(3t/^       7^3C%%%%%%%7t%%%SSSSSSSSSSSSSSOGO7% ( ^         63C3@
@QQQQKCOO%t~ /        /%%CC3%%7%77%%%QQSSSSSQQQQKQG  CO(/^ /         /^e3@
@KKSRQe3O(((/^      ^  O%C3%%%%%%%%%3QSSQQQQK#####/^ ^7/// ^^         ^ C@
@#C~/7G3~C/^/         /s7C33C3%%%%%3%QQQQQK######%/^  77/ ^^            6@
@#/7//s%///%/^ ^    ^/^t7C33C33C333%CQQQQ#####RRR ^/  ^C(               /@
@#S /(SO7 ^/      ^^^  %7(sCCC333%33CQQQ####RRRRR%//^^/7^/              (@
@RS^ /%C6G(      ^/^^ ^~((~CC3CC///7CQK#####RRRRS/ (/ ^7//^/            S@
@RS7 ^O36tQ%/^ /  C  ^^/(((6C6sC/ (/OK####RRRRRR//^^//^%OS//      ^   ^ O@
@##O  %%3 #s(^^   (  ^   ^S6666~7t%66#RS6OSRRRR#t~/^~7%t^^~^       ^// /s@
@RR(   7(/%O(       ^ResGssOOO(^(3tss#tOOC/^#RRRR//^/73C%^//^ / ^  ^ ((^O@
@R#O^ /((/   /(7    /#OsOOOOO#/^///GORRG%~S(C#RRRRRR#R63///~ ^^    O7/  G@
@#e7%%K#67/  /  ~ ^ /GGOS^  ///  ~OOsRRQO(((/###RRRRR#Q%t(~~////^//OO(OOs@
@##GGRRRSe%/O3/Q~~///K/^        ^/OOsRRRt(37/CRKQR#RRR#(~~(/ ^ / (GOOOOGG@
@#RR#RRRRQG(%O(t  S/   ^         ^OOORRRR7(////     (/  t/%S#CCGGGGOOOOGO@
@#RRRRRRRRQQSeSQ       /          OOORRRRS//(//        /        ^SGGGOOGG@
@RRRRRRRRRQs%(/                   GGGRRRRQ(/% ^                  CGGGGOGG@
@RRRRRRRR#s%/^^                  /eGGRRRRQt/~^ ^           t     /GGGOGGG@
@RRRRRRRRR(^    ^           ^   ^^RGGR#RRe3^// /^                ~eGGGGeG@
@RRRRRRRR GO^ ^                 ^(RGGRRR#3(/(/^ ^^                eGGGGGG@
@RRRRRRRRROt/   /^        ^^  ^^^tOeGRRRROQ/%/^   / ^            ~GGGGeee@
@RRRRRRRRRGOt ^^  ^ ^    /       6QGeRRRR#CO(3^^    ^  ^   /     QSSSSeSS@
@RRRRRRRRR#CeC^ t //^     /^ ^  ^^(eGR#RRRGQ %//    ^  ~   /     SSSeeSSS@
@RRRRRRRRRRQ67t(^^   /     ////^  ^^eRRRReeS/t~ // ^/(G     ////KSSSSeeeS@
@#RRRRRRRRReGS%^   /   // (3tOG     SRRRRQGQQ%Gt^^ (7/ /   /   ^SSSeeeeee@
@###RRRRRRReQKC///  ( (( ^GOGCC//^(^GRRRRQQSK7KC/  (3(//^ //     Seeeeeee@
@KQ#######SOQ / ^/ ~ (C~%OeeK#O/^///GRRR#SQQS3~/^  (G%337/(~ ^   %eeGeGee@
@QQQK###R~/tK(/   ^(COGQeGGQ###e/^/3GRRRRQQQQs/^^^ ^RR##S6 ^/ ^^ /SeGeGeG@
@QSQSQQ##t/%O^//~  ^###QGOG###R(~(((GRRRRQQK#eO/^~ /#####R#~/~^~ ^ SGGGGG@
@SSSSSSS#C(G^^^7 ~/R##RR#K#K##(^/ /3e#RR######S%^^ ^^R##R#RR#C~/  ^~GGGGG@
@SeeSSSeeS#/(  ^((#QQSSSGGeGGQ3%~/(3G########RRCO/   ^##R#RRRR6//^/COOOOO@
@eeeGGeGGGKG~t   #eGGGGGGGGGGG#O6/COGQQQK##RRRR#s7(/~(GeeSSSQK#O/((sOOssO@
@GGGGGGGGGG6(//~GGGGOGGGGGOGOOOsO6OGOQSSSSSQK#R#QO(CttOGGGOGOOOsCC36s666C@
@GGGGGGGGGGOs6CCC6ssssOOOOOOOOssssssOSSSSSeeeeGSQKBSssOOOOOsss6C33CCC6666@

             (((7777%%%7%777ttt((((((((~(~~//////^/^^
             (t77%%%%%%777%7t7tt7((((((((~/////^//^^
             7t(t%7%Ct77%%6(%Ct(%((((((((~~(////^/^^ /     /
             %%33%(33(%%%%C%%67((7t((((t%///// /^//^ ^     /
             %C6CCCCC33%%%%%%tC77(%((%^t7///// /^//^
             CC6s6666CC3%%%%%%%77tt((((((~///////^^
             @@@@@@@@@@@@@@@@B@BB@@BBBB@@@@@@@@@@@@@@@@@@@@@@@@
             6s6CCC7(7((~////~~///////~//^/^^^^^
             OssOOC7t((~///~//~(((7OOOsOGO////^^^^
             GGOOs%t((~/////~(~~6OOOOOGOOOOO7~///^^^
             GGOG3%(((~/////~(666666ssOOOOOGOS~///^^ ^
             eGGs%t~~~/////~(3CC3CC33C6ssOOOOOO(~///^^
             eGGCt((////////%%%%%73%%63C36O6GGOO~(////^^^^^
             eGs%((///////~777%77(6C3C3O%%ssOGGGO((~////^^^ ^
             GOC7(~///////(tt(t(C33CGK%~6%%O66OOOG%(~///^^^^
             Gs%(~///////~((((%(6~3C3CsCC3CstCOOGG67(~////^^
             O3t(~///////(((t%CC6C%7tSQSO7C3%3CGOGGC7t(///^^
             67(~/////^/~(((7C666S%%CQQQSeCC3CC6OGGC%(((///^^
             C7(////^/^^~(((%CCCeSQ36^QSQSG67(%CGGGGC7((~//^
             3(~////^^^^/~((C3CeGeSCt(SQQSeO673%GGGGs%t((~/^
             t(~////^^^ //(%3CQ##Ge(%CQQQSet%t%66eSGO37t(~//^
             t~////^^^  //(%%%KS##KG(C/G7%~(%3%CCOGOO37t((//^^^
             t~///^^^^ ^//7ttCKSO#R#(3%%%%%(66CC6OGOOC7t((///^^
             (~//^^^ ^  //t3(7QQGs%633%t36SeO63CCOGG637tt(~//^
             (~//^^^    //~%7tS%%33CCC/RQSeGOO3CsGGGs37tt((///^
             (~//^^^    //(%%(73CC%CS3CtQSeOs6CCOGGOC%7t(((~//^
             (~//^^^    ~/~%%7((tSQSQ C6QeGOCCC6OGOG3%tt(((~/^^
             (~//^^^    //~t%C7#QKQQQR%%^SOOs6C6OGG%%t(((((~/^^
             (~//^^      //(C%t#KSQQQQt%^GO/C6CsOGG37t(((((~//^
             ((//^^ ^    /~((7t7OQQQQS%7%O3CCCCsOO6tt((((t(~//^
             ((//^^^  ^   ///t%3%(6OOOC%(C3OCCCsOO%((((((((~//^
             t(///^^ ^     ///(t77%%%%C%C7%3%CsOO7t((((((((~///
             7(~///^^       ///~7%Cs3%3633%%CCsS%((((((((((////
             %t(~//^^^       ///~(((3%%Ctt(t36st~~~(~(((((////^
             Ct((/////^^      ~//~//((((tt%7CC////~//~((((////^
             s7((~~//^^ ^       (////(((t773~//////~~~~~~~////^
             s%t((////^^           ((~((t/^^^///////~~~~~~////^
             s%t((~///^^^                  ^^^///////~~/~/////^
             @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@