+++                                                                         
                                                   :********         'co$%%%%%i$+                 ********                                            
                                                   *%%%%%%%%        :%%%%%%%%%%%%i               :%%%%%%%%                                            
                                                  c%%%%%%%%%       ;%%%%%%%%%%%%%%%'             %%%%%%%%%                                            
                                                  i%%%%%%%%%      o%%%%%%%%%%%%%%%%$            *%%%%%%%%%                                            
                                                 :%%%%%%%%%%      %%%%%%%%%%%%%%%%%%*          ^%%%%%%%%%%                                            
                                                 %%%%%%%%%%%      %%%%%%%$c*$%%%%%%%i          o%%%%%%%%%%                                            
                                                !%%%%%%%%%%%     +%%%%%%%;   i%%%%%%%         +%%%%%%%%%%%                                            
                                                $%%%%%%%%%%%     c%%%%%%%    ;%%%%%%%^        i%%%%%%%%%%%                                            
                                               ;%%%%%%%%%%%%     i%%%%%%$    +%%%%%%%+       :%%%%%%%%%%%%                                            
                                               $%%%%%%%%%%%%     i%%%%%%$    +%%%%%%%+       o%%%%%%%%%%%%                                            
                                              i%%%%%%%%%%%%%     i%%%%%%$    +%%%%%%%+      *%%%%%%%%%%%%%                                            
                                             !%%%%%%%%%%%%%%     i%%%%%%$    +%%%%%%%+     'o%%%%%!%%%%%%%                                            
                                             i%%%%%i%%%%%%%%     i%%%%%%$    +%%%%%%%+     ;%%%%%%i%%%%%%%                                            
                                            :%%%%%% %%%%%%%%     i%%%%%%$    +%%%%%%%+    ^$%%%%%^i%%%%%%%                                            
                                            *%%%%%c %%%%%%%%     i%%%%%%$    +%%%%%%%+    :%%%%%$+i%%%%%%%                                            
                                           :%%%%%%  %%%%%%%%     i%%%%%%$    +%%%%%%%+    %%%%%%: i%%%%%%%                                            
                                           c%%%%%*  %%%%%%%%     i%%%%%%$    +%%%%%%%+   :%%%%%i' i%%%%%%%                                            
                                          *%%%%%%:  %%%%%%%%     i%%%%%%$    +%%%%%%%+   %%%%%%c  i%%%%%%%                                            
                                          i%%%%%*   %%%%%%%%     i%%%%%%$    +%%%%%%%+  *%%%%%i   i%%%%%%%                                            
                                          %%%%%%:   %%%%%%%%     i%%%%%%$    +%%%%%%%+  %%%%%%*   i%%%%%%%                                            
                                          %%%%%o    %%%%%%%%     i%%%%%%$    +%%%%%%%+  %%%%%i    i%%%%%%%                                            
                                          %%%%%%%%%%%%%%%%%%%%i  i%%%%%%$    +%%%%%%%+  %%%%%%%%%%%%%%%%%%%%%                                         
                                          %%%%%%%%%%%%%%%%%%%%i  i%%%%%%$    +%%%%%%%+  %%%%%%%%%%%%%%%%%%%%%                                         
                                          %%%%%%%%%%%%%%%%%%%%i  i%%%%%%$    +%%%%%%%+  %%%%%%%%%%%%%%%%%%%%%                                         
                                          %%%%%%%%%%%%%%%%%%%%i  i%%%%%%$    +%%%%%%%+  %%%%%%%%%%%%%%%%%%%%%                                         
                                          %%%%%%%%%%%%%%%%%%%%i  o%%%%%%$    +%%%%%%%!  %%%%%%%%%%%%%%%%%%%%%                                         
                                          iiiiiiiiii$%%%%%%%ii*  ;%%%%%%%^   c%%%%%%%   iiiiiiiiiii%%%%%%%iio                                         
                                                    %%%%%%%%     '%%%%%%%;'^;%%%%%%%$             i%%%%%%%                                            
                                                    %%%%%%%%      %%%%%%%%%%%%%%%%%%o             i%%%%%%%                                            
                                                    %%%%%%%%      +%%%%%%%%%%%%%%%%%!             i%%%%%%%                                            
                                                    %%%%%%%%       i%%%%%%%%%%%%%%%:              i%%%%%%%                                            
                                                    %%%%%%%%        o%%%%%%%%%%%%%+               i%%%%%%%                                            
                                                    $$$$$$$$         +$%%%%%%%%%i+                o$$$$$$$                                            
                                                                        !*iio;!                                                                       
                                                                                                                                                      

  .###..   ..o%%%%+.   .-c######c.   ..^^!!--'--.^!..        ..@##!########.   ...!%#####@!.. ..$%%%%i...i%%i%%..o##;......!%%%O$..!###O#####:...     
  .;$##c   ..@####*.   '#####@#$@@    .%#o####@###@-.        ..############.   .-$#######o#$....####@O...%##i@#..+###@.....;####@..!@#@####i##O..     
  .-###o... .O#O##*....#@#####%##$@....############-.        ..###$####@###.   .+######@O##@*...#####O...O#####..;$##!.. . :####@ .^#@####O##@#c.     
  .-###i!.. .O#$##*...o#@########%#;...############-         ..###i########.   .###########O%...%O$o#O...%##@@#..*%###'.. .:#@##@ .'###########o-     
  .######-. .O@ ##*...O#####cc#$#$@@. .$!;*########'.        ..######@#@#@O.   '@#####!$###*%o .#####O.  O##i@#..######i. .:##@#@ .-@###'+######o     
  .######o. .O####*...#####O..$@###-...^'-c#####^'-..         .#####c.         +#####!..@##@c'..#####O. .O##@#@..#######...:####@ .!###@..'@@#%#'...  
  .#%###O#- .OO#@#*... ####i..!##Oi--.....;#####.....        ..#####c.         ;#####...O@#@;'..@###OO. .O###@#..OO###O#;..:##$#@..!###@...###@%!-..  
  .#######$ .O####*...#####c..'####$!.....;#$io+.....        ..#####*.         *#@###...$@####..#####O. .O#O%##..i###### -.:##$#@ .!###%...*####i...  
  .#O####i@..O####*...#####;..-##iOi!.  ..^#####-.           ..#####@@@oo%-.   c####@   o##o@$..######...%#$$##..oO## #%%+.+#O##@..!###-...##i@#O..   
  .########$.###@#*...#####^..-@###+^.  ..+####@..           ..########@##'.   c####O   o###@i..$#####...%#####..@### ##@#.:#@%#@..^%$i....@###O$...  
  .########O.##@$#*...#####:..'##$:;!.  ..'####O..           ..########@##'.   o#####   i#%@$O..O####$...%#@@##..@### O###.;#%i#@..^i@#@...##*#O%...  
  .#####;###.##O@#*...#@$##:..^ ##@#!   ..'#####..           ..###########'.   o##O##   o#####..i#####...###@##..@### ^###!o#@##@..'#$#@...##@##@...  
  .#####.###+####@;...:o###:..-#####!.  ..:#####-.           ..##@@##OOi%O'.   *#O###   i#####..######...###@##..@####'$##@o#@#O@ .!####...#####@..   
  .####O.iiOOO####:...+##O#!...#####:.  ..+####O..           ..#;###+.......   ;@#@##   '#####..######...######. @####'.#O#:#OO#@..!###+...%#####...  
  .####%..####@#$#;...oO#@#...'#####!   . ;####%.            ..#####!.         :#O##@...i#####..@####o...O#####..@####.-%####@$#@..! ##: ..###%#@...  
  .%%$%@..o ##@#%O*...%#c##c..^#####!.   .*####*..           ..#####!.         c@@@##. .$#####..:@O###...######..iOc$#'.-###@###@..!##O*...#####%..   
  .####@..-#### ##;...-:#OO$..!#####'.   .;####c.            ..#####!.         !.@#i#-..@#####..!'##i@...######..@####-..O#%####@..^ #:@..-#####$..   
   ####O   Oo###O#*...$o@###..:$####.   ..!####%..           ..#O###!          ^.####i..$O####..;+$##@$-+c*;@@c..@####'. ^#@##$#@..^##;+..i$ii#@o ..  
   #####   '#%##%@*...O#####%@####@#.   ..+@###+..           ..#O#O#!          .#######@####@+..-oO#########@%'..@####'...@i##o#@..!##@O########'.    
   ####@   .c$####*....#@##########:..   .+###$...           ..@+cO#!          .;#%##########....i@###@######@...@####'....#O#@#@..!###########O...   
  .####@.....:##OO;.   +%##c#####@#...  ..;@#@o+..            .c%i##+.         . %%#$@#####@o.   .@##c######O....@####'.. ..@#oOc..!@#########@..     
  .##@##......@@!%*.   .!#%######@....  ...##+.!..           ..##@##+.         ...cO#######;..   ..o@#######^....@####;.....*@@!@..!O########i...     
  .!i$^o......###O;.   ...^;coco^.....  ...'-.....           ..$$$$$!.         .....:*ioi*....   ....-!;+*!......*o$c;+.....*##%@...;-..:!''.....     
 
O
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%occc**********i$
oooooooooooooooooooooooocoooooooooooooooooooooooooooooooooooocooooocoooooooooooooooooooooooocooooooooooooooooooooooooooooooiiiiiiiiioc;++!^^^^^!^^^^*$
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooccocccooooooooooooooooooooooooooooooooooooooooooiiiiiiiioc;:+!!!!!^^^!!!*$
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooccccccooooccccccoooooooooooooooooooooooooooooooooooooooooooooiiiiooc::+!!!^^^^^^^^*%
oooooooooooooooooooooooooooooooooooooooccoooooooocococccocooccoooooccccocccccccocooooooooooooooooooooooooooooooooooooooooooooooooooooc;+!^^^^^''^!^';$
oooooooooooooooooooooooooooooooooooooooooocooooooooccoooooooocooooccccccocccoooooooooooooooooooooooooooooooooooooooooooooooooooooooc;:+!!!^!^!^^!!!^*$
oooooooooooooooooooooooooccoooooooooocococcocooccocccccccccoocccccccccccccccoccoooooooooooooooooooooooooooooooooooooooooooocooooococ*::+++!++!!!+!+!c$
ooooooooooooooooooooooooccccooooooooocccccccccccccccccccccccccccccccccccccccccooooooooooooooooooooooooooooocoooooococooccooocccoccccccccc*;;****;;;;o$
ooooooooooooooooooocooooccccccoooooooccccccccccccccccccccccccccccccccccccccccccccooooccoooooooooooooooooooococcooccocooocooooccoccccccccccccccoooccc$$
ooooooooooooocccoooccoooccccccoooooccccccccccccccccccccccccccccccccccccccccccccccccoocooooooooocooooocccooccoocooooooooooooooooocccccccccccccccccccc$$
ooooooooooooocooocccoocccccccccooocccccccoccccccccccccccccccccccccccccccccccccccccccccccocooooocooccccccccccccccccoocoooooooooooocccccccoocccccooooo$$
ooooooooooooooooooocoococcccccocccccccccccccccccccccccccccccccccccccccccccccccccccccccccoooccccccccccccccccccccccccccoooooooocooocoooooooooooooooooo$$
oooooooooooooooooocooocoooooooccoococooccccccccccccccccccocccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccoooocccoooooooooooooooooooo$$
ooooooooooooooooooocoocoooooocccoooocccccccccccccccccoccoocccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccooooooooooooooooooooo$$
ooooooooooooooooooccccocoooooocooocccccccccccccccccccccccoccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccoooooooooooooooooooooooo$$
ooooooooooooooococccooooooooooooooooocccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccoooooooooooooooccccooooo$$
ooooocooooooococccoooooooooooooooocccccccccccccccccccccccccccccccccccc*cccccccc**ccccccccccccccccccccccccccccccccccccccccccoooooooooooocccccccccoooo$$
oooooccoocococccccocoooooooooooocccocccccccccccccccccccccccccccccccccccc*cccccccccccccccccccccccccccccccccccccocccccccccccoooocoooccccccccccccccccco$$
oooooccooocccccccccccooooooooocccccoccccccccccccccccccccccccccccccccccccc**cccc**c***ccccccccccccccccccccccccccccccccccccccocccccccccccccccccccccccc$$
oooocccooooooccccccoccooocccccccccccccccccoccccccccccccccccccccccccc*ccccc*cccc**cc*****cccccc***ccc*ccccccccccccccccccccccccccccccccccccccccccccccc$$
ooooccccccccccccccccccccccccccccccccooccccocccccccccccccccccccccccccccccc**cccc**ccccc**cccccccc*cccccccccc*cccccccccccccccccccccccccccccccccccccccc$$
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*ccccc*ccccc*c******ccccc*c**c*cccc***cccccccccccccccccccccccccccccccccccccccccc$$
cccccoooooccccccccoocccococcccccccccccccccccccccccccccccccccccccccccccc*cc*cc***cccccc*ccc*cccc*****ccc**cc*ccccccccccccccccccccccoooooooooooooocccc$$
ocoooooooiiiiiiiiioioiiiooooioooooooooooooooooooooooooocooccccccoocccccccccccccccccccccccccccc*****cc*********c*****ccc*cccc**cc*ccccoooooooioioiii$%;
^^^^^^^^!^!!!!!!!!!!!++++::::::;;;;;;;**cccccooocooooooooooooioiiooooooooi$$ioooooooooooccccccccccccccc**c***********c******;;******c*c**;:''-'''''';*
!^^^^^^^^^^^^^^^^^^^^^^^^^^^''''''-''''''''''^^^^^^^^!!+++:+^^^^!!!!++++:::+:::::::;;;***********ccccccccccccc***cccccc****ccccccccc***;;:^-........:c
++++!!!!!!!^^^^^^^^^^^!^!^^^^^''''''''''''''''''''^'+;;****:+^^^!^^^^^^^^^^^^^^^^^'^''^^''^^^'-------'''^^^^'''''-''''''^^^'''^^^^^'''-..-..........:c
::::++++++++++!!++!++!+!++!!++!!!!!!!!!!!!!!!!!!!!!:ioccccc*;+!^^!!!!!!!!!^!^^^^'''''''^^^^^^''--''''''^^^^^^'''''''''''^!^'-'--..-----..-..-..--...:c
:::::+++++++++++++++++++++++++++++++++++++++++++++:oioooooocc*+++++++++++++++++++!!!!!+++++++!!!!!!^!!!!!!!!!^^^^^^^^^^^!!!^^^'''------.....-.......:c
::::::::::::::::::::::+:::++::::::+:++++++:+++++++o%iiiioiioocc:+++:::::+++++++++++++!!!!!!!+++++++++++++++++++++++++++++:+++++!+!!+!!!!!!!!!^^^^^^^*o
::::::::::::::::::::::::::::::::::::::::::::::::::$O$$i$iiiiico*++::::::::::::++::::::+++++++::::::+::::++::::+++::++:+::::::+++::+:++::::::::::::::oo
;;;;;;;;;;;;;;;;;;;;;;;;;;:;:::::::::::::::::::::*OO%%%%$$$%%*co+::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::oi
c*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;::::::c@O%OOO%%OO%c*i+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oi
c***;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;:;o@O%OO@OO%OOio*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oi
*****;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;i@OOOOO%%$$iii:;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oi
*****;****;;***;;;;;;;;;*;;;**;;;;;;;;;;;;;;;;;;*%OOOO%ii$$o;:;+:;:::::::::::::::::::;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:oi
*****************;;;;;******************;;;;;;;;c%O%%%io*;;;:!++:::;;;;;;;::::::::;;;;;;;;::::::::;:::::::::;:::::::::::::::::::::::::::::::::::::::oi
*****************;;;;**********************;;;;*ci%%%%$o*;;ccc*::::;;;;;;;::::::::;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oi
**************;**********;;;;;**;;;*****;;**;;;;;*coo$%oocoooo*;:;;;;;;;;;;;;:;;;;;;;;;;;;::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::oi
**************;*************;;;;;;****;;;;;;;;;;;;;***i$iioco*+;**;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oi
*********;**********************;;;;;;;;***;;;;;;;*;;:oO$iic*!-';c**;;;;;;;;;;;;;;;;;;;;;;:;;::::::::::::;;::::::::::::::::::::::::::::::::::::;::::oi
********************************;;;;;*;;****;;;;;**:!+!*$$o;'---.';o**;;;;;;;;;;;;;;;;;;;;;::;:::;;;;;;;;;:;:;;:;;;;;;;;;;:;;:::;;;;;;;;;:;;;;;;;;:;oi
*********************************;*;;;;;;;;;;;;;;;^-'+^'+ci+-..-'.^cc*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;:;;::;;:;;;;;;:;::;;;;;;;;oi
*********************************;;;;;;;;;;;;;;;;!-..'+'-''--..-^^':c;;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
*********************************;;;*;;;;;;;;;;;;'.-'-+^--':!--!^!'^;c;***;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
************************************;;;;;;;;;;;;!...^^^^-';^'''^:+^'-cc****;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
**************************************;**;;;;;;;^...'!:!'++^-+:!+:!-.^cc;**;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
**************************************;;*;;;***;'...'!!+++!^'^^-:c:'..:o*;*;;;;;*;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
***************************************;;;;;***;-...^!:c;!!!!!!!^+;''::*c**;;:+^'^;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
***************************************;;;;****!''-.^+:+!'!^'^!^^^;+;c+!^++::;!^+!^;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
****************************************;;;***;::!+:'';:!-^!^'-^!!*oic*;:+++^'-^;c;+**;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oi
****************************************;**;**;*:^+:^-*o:^'!!!^+;!**ooccc*c;''+*coc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*oi
**********************************************;*;+!^^'!+^^^+!'''++c**cooooo:'^cc***;;;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;***;***oi
********************************************;;**oc;!'!;c+++!^!!!^!***;***;;!'!**;*;;;;*;;*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*;**;;;;;;;;;;;****ii
*******************************************;;;;*cii**i$i*cco*coc:^;c***;;;;^^+**;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*;;;;**;;;;;*;;;;;;**;ii
********************************************;;;;;*c**ii$oc;c:*$co!!c*::::::+!+*;;;;;;;;;;;;;*;;;;;;;;;;;;;;;;;;;;;*;;;;;;;;;;;;;;;;;;;;;;;;***;*;***ii
********************************************;*;;;;::cooo;;;c+;Occ:^+**;cooiOc+*;**;;;;;;;;;;*;;;;;*;;;;;;;;;;;*;;;;;;;;;;****;;;;*;;;;*;*;;;**;*****ii
*************************************************;+*$$%c:;*$co$;;*^^o%i;:+:$o:****;*;;;;;;;;*;;;;;;;;;;;;;;;;;;;;;;;;*;;;;;;***;;;;;;;;;;;;;;;;*;**;ii
***********************************************;;;^+o;:;:+!!:*;:+o;!o$o'.-'o%;***;*;;**;;*;;;;;***;*;*;;;;;;;**;;;*;**;;;*;;;*;;;;*;;;;;;;;;;;;;****oi
***********************************************;;;:;$ioc*co;;:;c*cc++c$'...^ic**;;;*;;;;**;*;*****;;;**;*;;;;***;;;;**;*;;;;;;;;**;****;;;;;;*;;*;*;oi
**********************************************;;;:;*i$;+::::;cci$ioicoo!!*;;***;;;;;;;;;;;*;**;;;;*;;;;;;**;;;**;;;;;;;;;;;;;;;;;*;;*;;*;;;;;;*;;***ii
***********************************************+''^;oo:;*+!^^!**ci;c$$Oc:;;:;**;;*;*;;;;;*******;;*;;*;;*;**;;**;;*;*;;;;;;;;;**;;;;;;***;;;;;****;*ii
**********************************************c!-'';c;:*+:^'!:cioo**o%$c+:!::**;;*;*;**;;;;;;****;;;;;;;****;;;**;*;;;**;;;;;;*;;;;;;;;;;;;;;**;;*;*oi
**********************************************;!!^!::;;;;:+::+;occ*i%$ii:+:++:*********;;***;***;*;;;;;;;;***;*****;*;;;;;;;;;;*;;;;;;;;;;;*;;;*;;;*oi
*********************************************cc+;:::+ci:^:o*;:++!+ci$$ii;!!+::*******;****;***;;;;*;;;;;;;****;;;***;;;;*;;*;;;;;;;**;*;;**********;oi
********************************************coc::;;;*o*::$o**;:+:::i$$i$o*cc::;c*****;;**;;*;*;;;**;;;;;;;**;*;;***;;*;**;;;;*;;;;;*;;*;;;*********;oi
*******************************************ciio;;;;;coc:c@$ioc;::;*i$%$i;::::!!+*o*******;***;***;;;;;;;;;*;;;**;;;;****;;**;**;;;;;;;;;;;**;;;*;*;;oi
**************************************c***c***coooocoo*;$@O%ioc***$%OOi;+;+!!---':c*******;;;;;;;;**;*;**;;******;;;*;*;;;;****;;****;;;;;**;;;;;*;;oi
*************************************:!'+!^!;:::ciii$oco$OOO%$iioiO@@$o;:ooooc;^'!cc*******;;*;;;;;*;;;*;;;***;;*;;;***;;;;**;;;;****;;;;;**;;;;;***ii
***********************************ciio*^-''+*c;:cii*:ci%%%O%$$$$%i$$$$ic%%%OO%;:;*c***********;;;***;;;;;*;;;**;;****;;;;;*;;;**;;***;;*;*;**;;;;*;oi
**********************************c%%%$%$*:;!+*o*;oioo$%%%%O$$$$%:+:ci$o;o%OO%$i*;;*************;******;***;;***;;****;**;;*;;;;*;;******;*;**;****;oi
**********************************cccco$O%c:::+oi*ciiii$$%OO$i$$i!;**c$i;*%@OO%ic;:;;************************;**;;*******;;;*****;;;;;;*;;;;*;;*****oi
**c******************************;o$%icci%$;;**cio*oioi$%OOO$$$$$cic;c$%c:$@OO@%o*;;;**************************************************;****;*;;***;oi
*cc******************************c%@@O%cc$%$*oiiiiccii$%O@@%$$%%$iio*c$$i*o@@%OO%oc*;;***********;****************************************;***;;;***oi
*cccc****************************$@oc$O%oi$%$$$$$$ic$%O@@@OO$$$%%$iicco$$c*O@@OOO%icc*;*;**********************************************************;ii
ccccc*************************c*cO$^'!c@$i$%%OO%%%%$%OOOOOOO$%%$$%i$o;c%Oo;$$o$@@O%iocc*;;;;********************************************************oi
*cccc************c**************cO;-^'!$O%%%%O%%@@O%%%i$@@@i+oi*cO%%o*c%Oi***::c@@O$io*;*:;*********************************************************oi
**c*cc*c*c**********************c@+':+-c@@O%%%ocoocccc*cO@@$!+::c@O%oo*%@$o;:^^+i@@O$ic*************************************************************ii
*****ccc**c*********************c@:-^^-c@@OO%%**********$@@O++++;@@%i%o%OO%*:--^*@@O%ii*c*******************************************************;**;ii
****cccc******c*c***************cOc.'-^$@@@OO%**********oO@O!::::%@iooo$@i;oo!'!:O@O%$ic************************************************************ii
c***cccc*c**c*ccc********c****c*c$%:^:i@@@OOOo*cccccccccciO%!:;;:ii;**c$Oii%$;!+;O@@%$$c************************************************************ii
c***********c*c*cc**c**cc***c*ccco%O$O@@@OOO$cccccoooooii$%c!;:;:*c*oioi$%O$io*+*@@OO%$c************************************************************ii
**************cccccccc*c*ccccccccciO@@@@O@%$iooioiiiiii$$%%*++^!+;$i$$ii%%OOo;+*%@@OOO%c**c*********************************************************ii
***********c**cccccccccccccccccccoo$OO@OOO%$iiiii$$$$$$$$%$*!''^'!i%iioo%OOO%$$O@@@OOO$*************************************************************ii
**********cccccccccccccccccccccccooi$$%%OO%$$$$$$$$$$$$$%$o*:.-..'*%$$io$OOO@@@@O@OOOOo*************************************************************ii
*****ccccccccccccccccccccccccccoooooooii$$i$$ii$i$$$$$$$$$$%o'^^'^*%%%%$$%OOOOOOO@OOO%**************************************************************ii
**ccc*cccccccccccccccccccccccccoooooooiiiiiiiiiiiiii$$$$$$$$i::::;o%%%$$$%%O@@@OOO@O%o**************************************************************i$
c******cccccccccccccccccccccccccccooooooooiooiiiiiii$ii$i$i$$$$%%%%$%%$$$%%%OO@OOOO%occcc*c*********************************************************ii
ccccc***ccccccccccccccccccccccccccccccooooooooooooooiiiiiiiii$$$$%$$$$$$$$%%OO@@OO$ooocccccc********************************************************ii
ccccccccccccccccccccccccccccccccccccccccoooooooooooooooiiiiioiiiiiiiiii$$$$$%%%%%%$ioocccccc********************************************************i$
cccccccccccccccccccccccccccccccccccccccccccoccoooooooooooooooooooooooioiiiiiiiiiiiiioooccccc*c******************************************************i$
c**c*c*c*ccccccccccccccccccccccccccccccccccccccccccocooooooccoooooooooooooooiiiooooiooccccc*ccc*****************************************************i$
cc;c:cc::;**ccccccccccccccccccccccccccccccccccccccccccoccccccccccccocooooooooooooooooccccc**cc****************************************************c*i$
c+c+c;*:;ccc*ccccccccccccccccccccccccccccccccccccccccccccccocccccccccccoooccccooccccccccccc*******************************************************c*i%
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii$$ii$$$$$$$$$$$$$$$$$$$$$i$iii$$$$$$$$$$$$$$$$iiiiiiiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiioiiiiiiiiiii%