''''''!%@NB@@NN%'''''''''''''''''''''''''''+CXC:''''''''''''''''''':::::::::::::::::::::::::::::
'''':0N@/!''%/:'''''''':::::::/^:'''''''':0%X+''''''''''''''''''::::::::::::::::'::::'''''':''':
...'+NC'''..'''''/@X.''+/+:'':/:'+0%!.''!@X+'....'...'''''''''''''''''''''''''''''''''''''''''''
^^^^^+X@@C+^^^^^0$/B!+$@X0^^@0!^CB%BB+^%BX!^!!!!!!!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^%0CX%/!^/0X^^^X@!0/+$0!+^^0@^^XB/CB/^/BX!+!^^!^^!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^BNB@0C00@$%^^^B^C^^@C+X+!XC/++BC0BC+!@B%+!^X00%^!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!^/XC00CX/!!!!!X/!!!%%/!!!C/!!^/^/X^!!/%!!!^+0%0$C!!!!^^!!!!!!!!/@^!^!!!!!!!^^X@!+^!!^!^^^^^!!!^
                                           .X!  :@0  .!! .^C. :%B%/C: .C^'  !C$+.+::C%  . '!  ..
'''''''''''''''''''''''''''''''''''''''''''C/''''!B'!@^':X0$':C@!CXC^:/%BX'!@C:/$!^@/@'+$+B/::::
''''''''''''''''''''''''''''''''''':'''':^0X:!^+%0^:@^!^$^@/:@X^/%^^!/+B%^:$/^!0^:@:%'+NCCC/''''
                                         ^C0@0C%+. ^+::^^%%'%X!.++:'!.0/! C%!.%^'.%^..X%.!+'    
                                                                                     ..         
.                                                                                  . .          
    .                   .....''.       .......  .    ....                                       
   . .'.            ...''':::!:::'''....''':''''..  ..'::'...                                   
   '%/^:'       ..''!!!!^^+/%%XX%%+^^^!!!!!^!!!::''''':!!:::'''....                             
   .:'...     ..':!^//XXCCC0$BBBBBB$@0XXXX%XXXXX/^!:.:!!!!!!!!::::''...   .                     
   ..       ...':!+/XX00@@$NM##MMMMMMMNNNNNNBBB$@@X^'!^!!!!!!!:!!:::::''.                       
    ...      .'!^%C0CXX%XC00C%XX$##MMMMMMMNNNMMMMN0:!^^!!!!!!!::::':::'..                       
    '^.        '^X@CX%XXCCC0$BB@@MMMMM#BX/////+/CX:^^+^^!!!!^^!'.   ...                         
                 '!:X$NB@+':/CC$N###MMNB$$@$BNN@!^%X/+^^^!!!!:'.                                
                    ..':'...     '^/C@$B@X+!%/:!++/+^^^^+^^!:'                     .            
     ..      ...........':'       ...!%0!'.'!.:^^^^^^^^^!!:'.                                   
.':^!::'.'!+XCCCC00CCXXXCX'.      ....''''::'.'^^^^^^^^^!:' .:':^'.!^!'!: .' ^'::::!!:         .
.'..:!'!!+XBNMMMMMMMMMMNB$@C%+^+%%X/^X0X/+^!!:.'!^^^^^!^^!. /%/++/^+.!+/../!^+%/!//.^.          
:'   '!+^+C$NMMMNNBX%C00000$BNMMMMMMNMMMMNB$$/  .'':!!!!!!!'   .:.':. :!!':: ''.':. .:!.        
'.!!:''!!:!%0BNMM0:+X+!^/XC@BNNMMNNNNNMMMNN@/.       .......   +%%+//^/'^+/''//^%:!+%'!         
.!+^!!!^:. .^X$@/'/@$N@%!!!!+%CC0@0XBN@X+:.                    ...'... . .. .  .. .. .   .      
  :!^!'.    :!+!+CC00$BMN$@X%///%%%%!.                     ..:/X0C@%/!+:!/!+!^':+^%^ .+:^:+^' .+
            .!!!!/@$$NM########N%.                          :!:::.+/++::! :'+!''::!.!^:+!:::  ..
    !%+:.    !^^++X/%XC@BNMMN@/'                                       ...::...............   . 
....':!/X%!. .^^^^!:'''':!^:'.                                    ......':'.'!+%C0@@$$@0@0C/^:'.
:''. :!!!!+/C^:'''...       ..''..                           .:!!:'.':::'..!%@NNNNB0X0B$@BMMB$0%
^^!!:'/+^:'':!!'!/%^:::::'''':!+%^                           .!%/:'.'...   .'^/%0@C^::!^CNNNB$$$
^++++!:@@0%+!'.'+CX%^:::!^^+C@X!..                              .'''''''..'.....::'.   .^+^%X^:+
!^++/%+^@NNBB@%+XCC@@$@0@$NBX!'...                       .      .':!!^+^^!!!^!'     .':'...:!!^/