^:.                                                                           :^  
            ..!%%^''.                                 ...                                .^/%%  
            .'^^%XX^:''..                      .'':!::::!!:'..                         :/X%/%+' 
            .':++XXXX+:':!!:''::''.'''''''::''!^!:::.   .'::!!!:''.....      .''.   .:/%%%/+X!. 
            ..'!/%%XXXCX^:!!!!!^+////+^^^^^!:!^^:...     ...!^!^+^++^^!!::''''....'!/%///++%/'. 
            .'''!%CCCX%%CC/!'':!^++/%/^^!^^!'::::''.   .'''::!!!^^^!!:!!!:''..  .!////%%%%X%!.  
               .':+XXCX%%/XX+'  '::::::!^+!!:!''':!'.  '!++^!:':!^^^!'''''..  .:+/+//////^++.   
                   ^XXXCX%%/%/^::''':!!!^!::''.':^+:. '^%+/+^:'!:!!!!:'..'''':^++++++^!!:!^. .  
                  .'%%//%%%//+++^!!''::!^!^^^:.'!^^^' ^X%%+^!::^^^!:::':':::!^^++^^!:::!+%!'.   
                  .:+%XXXXX%%/+^^!!::!!^!!!^^:'::!!^!.^%%+!:':^^!^!:::''''::!^^^^^^^++//%^.     
                    '/%%%%XXX%+^^!!!^^^+^!!^!^++::^/!.!%/^!^!!^^!!+!:'!::':::!!^^++++/%%/.      
                   .:+/+!!!+%/+^^^+/+++%/+:!^%%%+:!+:.!%+!/%%+::!!+^:'::!!:':!^^+++++//%/!.     
               ...'!^^^!::'!^^^^^++^++%XC%!:^C@X%!:^'.:%%+XC0/''^/%/!::'::!!::!^++++++%//^'     
              .:!^^!^^^^::::!^^+++++++/XCC+:^00X/+^!''!/C%C@@+.:/X%^!!:::::!!!!!!!^^^^+//+^'.   
             ':!!!^+^+++^!!^^!^+/%%%%%%%XCX^+00X//+!!:!/C%C0@/:+XX/%/+++++^^!!!::!^++//////^.   
           ..:!^^^^^^^^+^^^++^^^+++^!!!!+%CCC00%+%+!!:+%%+%XC%%XX/^!::^/%%//^^^^^^^+++++///+!.  
  .     .'':!!^^^^^!!^^++++^!::!!!: .'    '+C00X+//^:!/%%^^/%%/!.   .'!.!//+++//%/++//////%%/^. 
.  .''....:!::::::::!!^^^!::!^++//:   !.   :^%@@X%%^!!%X%/%%/:.     .:!.+X%+^!^+/%%//+++///%XX+'
.:!!^^^!!!'':!!:'.  ..'::::!+++^^/+'  ^.  .!:.X@@XX+!!/%%XCC+ ...    ..:%X/+++^!!+///+^^^^^++///
!!^^!!!!:::!+++!:'..  .:^++////^!!!+^'.   ....!CCX%+^^+/%XC/:..'.    .!+^!!^///+::!!^^^^!::''':!
!:!!!!!!^^+^!^^^:::'. ..:^/%%//+^:'':!!!!!^^'..:++^^!+++%%^: .!+^:':!!''':^/%%%/^!!!!:::::::!!!:
!^!^^^^^!!:''..::!':'::. .:^/%//+^!:!'''.'!:'. :!::::!+^^+!  '!!::''''':!^++/////+++^!!^^!'':^+!
^^!^!^^!:'''....:!!'....'':'':^+/+^^!::::!^!'.':''::''!!::::':!!!:::'::!+/+//////++^!!!+///+^!!^
^!!:!!^!:!:'''''':''.. .   .'!!!:::!^^^^!!^!:':''':::!!::'':::!!^^!::!!!!^++^:''':!!!^!^///%//^^
!!!!^^^!^!!!''''''''''''''....':!++/%%%+!:.:!!:''':::^^!!''!^^!:'^^^++!:':'...':!!':^^!^^/%/+//+
:!!!!:!!!^!:::'''..............'':!+%XX%+!':^//!.  .''. .:+%/^!!!++///^:'.'''':':!^^!!++++/%/+//
:::'':!!!^::::'''..'''..''.  .'':':!+%X%/++^^/XX%!...'.:%0@C/++/+%%/+!!:':!:::!:++!^^^!:^//%%//+
.'..:!!!^^!^!^^!::::'...':'.    .'':^/%X%%/+++%XXX/'  !C00CX/+^^+/X%!:!!:..'::'!^^//+!^^++/%%/++
....!!^^^!:!^^!!::'....':!::... ....':^/%%%%%%XXXX%^.:%XCXCCX%///+!!'.''''::'::^+//%/+/+++/%/+^^
  ..:!!!!:::!!!!::''''':!:::.       ..':^%XXXXXXX%/^':+/%XXX//++^!''.'.'::''''!^^+%XXX/^^+/++::!
  .'!!:'''::!!+!!:..':::!!!:'         ..:!+%%XX%%//+^^^^^+++^^!:::!!:::!'...'''!+++//^/+^//+:...
 ..:^!'..':!++^+^!:::::!:::::'          .'!+%CCCCCX%%/%/++^:''..':!^^!!...  .':..'!^/^^+/+^^.  '
 . '+!::'':!!':!+!^::::^!:''.'.           .'^/XC000CCXC%++^!:..  '^^^!:'::'''':'''::////++^:.  .
.. !^^^:::::'..'!!!::''!!!::''.              .'+XXXXXXX+!:!!'    .:^:'!!!!!!:':^^!!!^^+/+^!:.  .
. .+++!!!:!::''!!!:':..:^^!!!'.                 .:!^^!:'.         ''':^^^^^^^'^^++^^!':/%+!'' .'
. .^^!:':^^^^!::!!!!!::!+!!!!:.           .  .   .  .  .         . '.!!!^!!^!:+^!^^+^  ^X%^'