/////////
                                               ////////////////////
               RYTO                            //RYTO///^/////////~
              RYTOJ                   ^   ^  ^ /~RYTOJ///////////~(
              RYTOJ    ^^ ^  ^^^^^^/////aa/////~~RYTO//////////~/~~
            RYTRRRR        ^^^^aaaaaaaaaaaaa////~RYTOJ**///////////
         %RYTOJR@@      ^^^^^/^////aaaaa/a/a///~~RYTOJ***//////~//~
       %%RYTOJ*ReSGR^^^^^^///^s//~~aaaaaaaaa///~(%RB@@BBB//////(//~
       RRJRRRR@RGSSQSB^^^/ReC3e~~~ssss/ssssss~/((RRR@@B@R(////////~
     ^CQttR6C@@R@@BQ@BsOSRR/~ s~sssssssssssss~/(((RB@@BBBR///////~~
     sQRB@R@@@@R@@@@BKSeS%/////cccccccccccc~~//(sRR@@BB@@R////////~
    tO#@@@RQeQ#RRRR^^^^//cccccccccccccccccc//~/33C~BBBB@BB/////////
   #@@77%%R@@RQR@ee^ccccccccccccccccccccccccc//(s%K%RRB@@B////////~
   R@s#s6CR@@@@R^e^ ccccccccccccccccccccccccc//((((~RB@B@@////////~
   Rs/6B@BRRRR@R^     ^^^^^///^//////////////%/(((~~R@B@@@/////////
  /( 3Oe#QR#@@@R        ooooooooooooooooooooooo((~~~BBB@@/////~////
     GSQ#BR#RRRR        o ^//oooooooooooooooooo(((~~B@@@@/////(/~~~
    (#Q#BGRS#RRe        oo^^^oooooooooo///////o((~(CB@@@B/////(//~~
    OQQB@ RGR#Re         ^ooo/^/^oo///ooooooooo(7(~RB@@@//////~~~~~
    QsRBQ RS#RRe         ^^ooooooooooooooooooo/((((R@@@j/~~~~~~~j((
    #Q#B   e#R#e          oooooooooooooooooooo/76((Q@@@@(6jJJJJJj
    QK#(   SKRRe          ^^^^/^/ooooooooooo~/~KSeGsB@@@sjJJJJJJJ
   ^SRR/   eQRYe     /^^//^^~t7ttt77TTT7%%%%CSGGOO7sB@@@sjjJJJjjj
///(QRB////QQ#RY(((eees  ~sO  tttTTttTTTt OoooOOOo(SB@@@6JJJJJJJJ
RRRRRRRRRRRRRRR     YYYYYYYY    TTTTTTTTTT   OOOOOOO     JJJJJJJJJ


 RRRRRRRRRRRR        Y Y YYY     T TT TTT   OOO  OO      JJJJJJJJ
  RR  RR  RRRR       YYYYYY      T TTTTTT     OOOOOO       JJ  JJ
   RRRR   RRRR        YYYY         TTTTT      OOOO         JJJJJJJ
                       YYY                                    J