..'':'''^^+///%%XXXXCC0@@$$0C$BNNNB@@@%CBC!'             
                           .:+/%C@$$BNNNNNNNB$@XX$BNNBB$$$$BBBB$@BBC0BNNNB$0$%/@^C.             
.                            '^%X0$BBNNNNNNBC+'.   :CBBBBNNNNN$0C$B$CBNNNN$0@X+X/%       ..     
                               .:+%X0BNNNC!.         '^C@B@0NN$CC$B$0$NNNN$@CX!!0:   ....       
 .                                .'!/0X'..      .:!'   ..'/NN$X0BB@@BBNNNB@XC:00'   .......    
.! .                        .  .......'      .^XC/:   :^+!. !%@C$BB$BBNNNNBBCC/@/    .          
. ...                              ....     '0%!:.:/0NNNNN@C!.!XBNBNNNNNNNNB@%X$:    .          
                       .       .            .  '/$MMMMN00@C@@@X^+^!::::::!^++!+C.               
               .::!!'. .'  . ..''''.         'CMM##MMMN$0$00@$NB@%'                 ... .       
           .'^C@$@@@@@X!'... '':':.....     .^NMMMMN$BBB$@BNMMNNNN@!       .   : ...'.'::.      
       '.:C$BBBC^^%C@@X^ : ...'+!C@NB%/C$$$@@0@MMM##MBBNMMMMM##MMMN$%CCCCCC$! .  '.....'%%/!'   
      '^^BNB%^/++X$$$BC'!+C0:!!^.. .'  ^X0##$BBBM#######MM##M####MM$@$N#####^..    ....!C@@0X/!'
  '  !^!%NCX0BBNBB$X%:..!+%%/+X+. .     'C#MBMN$$MM##########MMMMB$$@B@B####% ...::::^0@BNNBBB$0
     X//C%!:!^+/^' .....'.!^+B#M@+.  .:XN##M$#M/+@NMMM###MMMMMNMMNC$NB$X0/CN0    ...'+BNMMMMMMMB
    :C/X+!!::':!^+%X%+':''NMN#####MC+$#####M$B#0$BX$MMMMBMM#MNBNMNNX/X%!//+%% .......:C@BNMMMMMN
  . /$C/+!^^^++^+^/%+/!!!:::::::.'!+/!!:':^+!^^'...'BNMMM0$MMMMB0@0/'.'''''.:.''''':'::^/%CX0X0%
 '!.XN@X+!!!!^^^^^^^^^^^^^^^^^^^  +/@+:'''%X!%/^'.+!^%XC%!'+$BB0!....'/$C%%^/'/.^'!!::!+^.+^%':^
... CB$0%^^^^!!!!'::::!!^^^^^^^^'.:+!0''''^CXX/^^.X//%++/X''....''''.':0%++^!.%././%/.+C%.+%C!.+
 '. .!XC%^^^^!::::!'!:!!^^^^^^^^:.^+^N/!:'!/0+C!/:^X+%%%XX!'.''+X@@%...C%^:''.^!!'^+/ ^!+.'^+^ !
  ' ^: :+^^^^!!!^::.'^^^^^^^^^^^:.:+X$@!+'!/0^X!^'.X!+++++^.....'.''...+X^''''.+.!::!':'''.:.:.'
 :':!N/. '!!^^^^^!!!!^!!^^^^!^^^!.!^^!C.'.'^0!/::: %:^^^^^^.     .     '%^:''. .'..    .      . 
  ...NNX: .!^^^^^!!!^!!:!!:.:^^^^'^^!.X ...:X!:+::.!:'::!:' .              .      .             
   : %$CC^..::!'!::::''!:!!!!^^^^:':!!X^+@+^+/'!'...   .   ..               .    ...            
   !''@X%+^:.::::'':!!^!!^^^^^^^^:.':!X/^:. .    :'.''.'..:!::.. .!  '. ..''  . .....           
   !:./CX/^^!..'^^^^+/X/XC0CXCX+:...... .....  .^. !NB0@$$B$@B0$X$$0$$0@@BB$$+':''..:'.        .
'  !. .%/++%/%!':!^!+%!!/++^//+'.::':...       +.  /CX0@B$$B@B$B0@0@@CCXC0%XB:....'''+/'.      '
.  : . .!^/CC$CXXC%/:'::'!:'''..... ...'... .  ^        ''... ':.!%^:^X%XXC$0'  .     .        .
'  : .. .!!:!'.''.'!:':!':!+:+:..''.........   !.        ..    ......!::!^!'.    .......       .
.  : ... .:'!'^/::.:''.'::...':...'.....''^^^...''.                   ''...  ...'''.'....      .
.. :.'..'..:':%/^!^^^:!!:::..'!  :!:::...!^N@':!  ...'. ...''..........''''::!!!!:''''....     .
'.......''' ..:^:!!!!:!!!!!'''^'''!..^...!'''::!   !'.!.:!:!!.'^':'.........                   .
... ....'':^'..:'..::.'......':...'.''..'''' '::'.':'':.':':'.'!'      .         .             .
. .  ........                      . ....... .... .  . .    ..           . .                 . .
                                  .' ''.. ''...''''''''''   '.''.':':'  .:.':':'  ':'::.:'': ''.
                                                                                  ..         ' '
                                                                                               '