^!^!^!!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+^^0##MM#################MN0X0N########MNB@X%+^^^^+^/C^XNNNMM#####C%XCX%%/%%XXCCX%+/%/^+//^^^^^^^^^!++++^!!!!!^!!^!!!0N%^!^^!!^!^!^^!!!!!^^!!
X%%^^^!^^^!^!^^^^^^^^^^^^^^^^^^^^^^^!^^!^!^^^^^^^^^^^^0####################N0X$M#######N$C%/^^^^^++^//+@B+0N%XX/'':::''''.''''':::::''.''..'''''.''''.'..'''............''................:!!!!:
###MNB@$$B$$0C%/+^^^^^^^^^^^^^^^^^^!!^^^^^^^^^^^^^^^^^+N################BC%%/@B####N$0CX%^+^^+^^^^+///%N%+B$+@N! /MMMMM@!......^$MNX:......^$NNN0:. . ..:CNNC.. .@NNB:.    %NNN/   .BNNN/ '!!!!:
################MB@C^^^^^^^^^^^^^^^^^^^^^!^^^!!^^^^^^^+N##############M0++/+%XCC@@0CC@$$C!^^+^+++^++X!0B^CM%%NC' %####@.  :$0.. %M+.../$X...!MMX...'0@'...BM^ . +M#M+.     X#MM!   /MMMM% '!!!!:
####################X+^^!!^!!!^^^!^^^^^^^^^^^^^!!!^^^%M###############B/X0B$%+XXCCBNNMMN@^++^+++++/^/^0%^/0+%B+' %####@''.'0M$$$B/...:N#$...'N0....0MM/^^^N@   .$#M/. '%   X##@ . .$#MMM% '!!!!!
######################NMNNN@C%%^^^^^^^^!^!!^!^^^^^!^^/B##############$X0BM##M%/0BMM###MMC^+^+%+///+^^+@/+$C!0@%: +0CC::/^!+%^+%0C:++:XMM%...:N:':!+$BBB@@@C%%+/XXC0+/X$X!''XMB+^^:!C$$0@+ '!!!::
###############################MB0+^^^^!^^^^^^^^^^^^^^^N############X%@NM####N@NMNM###MMC!++////%++^^/%/%B^!XX$^ ://+. +: !/: '/: !/^!+!%^:+%!/'.+! !/! '+..+!^+ .+!!+..^+'.+: !+!'.^^^+: '!::::
##################################$^^^^^^^^^^^^^^^^^^^^$###########@C$@00@N###B@MMMM##MNX^^%%++//++^+++/^/+^C@0! :/// .+: '/: '/+..!/+++/: !/^^..+! :/! :+.'+^++ .++^+..^^..+: :+!! :^^+: :!:!:!
###################################M0X^^^^^^^^^^^^^^^^^+N#########0/%+^+%%+CM##B0BNNNMNB%^+%+%XC0$0%++^++++/C%X: ://+..+' '/' '//+' :////: !//^ .+: '/! '^:+///^ '+//+..^^ .+: :+!^..!^+: '!:!::
######################################M$0X+^^^^^^^^^^^^/M########@0X^^^/+%/++/$#0C0@@@$0%!+%%/+X%X$X/+/////%0%0: !%/+..+: :/' '/^/+' :///' !//^..+!'!%!.:+'.+//^ '+//+..^^ .+' !+!+' .^+: '!::::
##########################################MMBB0+^^^^^^^X#########00N$+!!!^+++^/CX+%CX%%//++//+////%%////%%0X%XX: %MMM$0@0@@+!''/@+'' +BB/. '!$+'!^%M#BCCC@N:'''+B@^:::/%'::'$@::+:%/^:+/: '!:!::
###############################################N@0^^^^^^0########BX%N@X+^!!!^XC++/%XXX%//++^++///////%%%X/%X%%%' X##N.  .BM/   %#%   +M0.  '@M/...^#$:...0@  ..@N!   ...   'M@.   CMMMMN% '!:!:!
##############################################MC+0N@^^^^/M#########$00BM$XXXX/X0%+/C@$$B$$$@0CX%XX/%+//////%%%/: X##M+.  ..  .+N#N!   . ..^B##B:   '.  :@M!   ^M^ ..XMM/   'M^    ....@M% '!:!!^
#############################################M@+%XNM0+^^^CM##########@++C$00X/++0CX+^!^^/X0B####MMNB$0X/+++++/%'.:^^^^:     .!+++/+'    .!/%%%%/'     !/%+.   ^!   .///:   .+.        ^/: '!!!%B
#########MNN$@X%%@00@$$BB###################N0+^+$###%^!^^/C0$########NC/%C$000X%+%%++/%X0%+/$##########MN$0X%/^^+/+/%%%%/%%00%C///%//XX++/%/%/XX/X%C/X%+++/%//^^^!^%000+::::::':''''':''::!!!^0
######M@XX%XXX//CCCCX0000$$M##############M@++C0@N###0^^^^^^^/M#########$C%0@X/+^^^^+/C0@@0C%+X$###############NB@@@C/+/%XX%XX/%%XXXX0@N$@CCCX%00@$@@0C000CX%//++////@MMC^!!!!!!!!!!!!!!!!^C000C
######M%+!!^:!!^+++/+%%%/CXB#############N0%^XN$BBBM##X!^!^^^^CM#########MB%+!::!^^+/XX//X%%/C0C@B####################MNB@CX//+%BB$@XCXMM@C0X0X%%X0CX0CC0CCCX+//////%%NMC!!!!!!!!:!!!::!!%BMMB@0
######@::!::!!!+^^^/X%%X/0X0############N0/^!%B$+^+%M#MC+^^^^^%M###########N@^!!!!!^^!+++^+/+%$M0CCB#########################MB$CXX%%%%CB@%X%BX/%%%%%/%/%///XC+++/++/B@+!!!!!!!!!!!!!!+C$NMB@CXX
###MB0+^^!+X+^!/@X+++/%X0$N$BM#########M0//^%@$$%^!!+N#$^!!!!^^B############N0%^^^%@C+^^^^++/++XNM@X@N#############################MN$0XXXXX%C@@%%%%XXX%//%/+X+++///$C^^^!^!!!!!!^/@NMMMNB00@000
##0^+^+:!+0X@CCNM0CX^+%!%%+C@@BM#####M@C%/^^/C0@%^%/!+0M%^^^^^^@############MB0C%++C$@%^!^^^++^+/0NN0X0M#################################MN$@0%%%+/%%%%0/%X%///++/%0%^!!!!!!!!!/@MMMMMN$B$@$@@0@
####MMMC%B0C@BB##NB0C$B+X%X$MB@BB$0CX%+++%X0@@0CX%X+^!/BX!^^^^^0BM############M$CC%+%$B$X+!^^++++//CB$00$N###############NBM####################N$0CCX/%+/%/++//0$/!!!!!!!!^C0BMM#MMMMNNNBBBBB$@
#####M@/XNB/@NM#0/C@@/%+X//X+X%XX^%+^//XCCC%XCCXC$0+/+^XX^^^^^^^^^/XM###########N@0C/+0NN$C+^^^^^+++/%@B0%CN##MMMMM####N/%X@0%CM#######################N$0X%/+/@N0^!!!!^/0@M###M##MMMNMM#MMMNNB$
##MN0/+00@NN$@NM$NB@C/%++CXX/XX^++X%+++/%XXC%%X$NB@%/^^CM/^^^!^!^^^^/B###########MN$CC++@MN$C^!!^^+++++%C0C%CN#####MB$$%^^^++/CN############################MM0C%^^^^/0$M#####MB@CC%X%+/%X000$NN
N$%^^%!NMMB$/+/X0C@0X%X%C%XC++++^XX/////%%%XC$MMNN$X/^^!CNC^!!^^^^^^^%M############N$@CC%%0NN@%^^!!^^++/%C@@XX@M########MN$0@$M########$X+XM###############M$%!^!^^^XM#######B0@X%0$$@0/+/XX0C%X
/!^%/%^CM#BC+++^N/+/^/%CC0%X%^+!+/!++++/0M###NNMMNBC++^^+%BX^!^^^^^^^^000$N#######MMNB$@0X//$MN0/^!^!^^^++/%/+/0####################N0++C$###############NC/^!!!^^CBM######M$00@%0%!^+%%+%@0X@@+
%%/%%X/+C00BX+///+0CC%+%%XC%%+^+%XC@$$NM##########N0/+^^^%/0/^^!^!^^!!!^^^+N####MMMMNBBB$0CX//++!!!:!!!^^^+//CCN################B$C/^+CN######MMMNB$BMBC+^^!!!!!+B#########M@XC$0C^+%%%XXCC%XC@+
XX@@000/^/0B+%%//+0@00C+^/XCC%+XM###M############MN$%/^^!%++C/^!!!^^!^^^^^/M######MMNBB$$@C%CX/!!::!::!!!!+/0M##############BC%^^!!!//X0CCCX%//+^^^%$X^^^!!!!^^/@#########B@$@/+^^CNNM##MMM$+++^
CC/0$@0X/+XX//X++%C@00CX/^+/XX%+CM####MC/C0X$#####MBC/!^!/+++%@C+^^^^^^^^^CM#######MM####MN$@0X/+!:::!!+X@N##############NX^!!^^^^^!!!!!^^!!!!/C@NM@^!!!!!!!!^%BN########N$X/+^+/C@C$M0%XX%C+^+/
00X/C@0CX++XCCX/^/%0$$@C%++^+%%+^00XXCXXC00NM###MMMB0/!!!+%++%/X$/^^^^!!!!^/$###M$00X%%XXCC00@@$@@@$$BN#################C!!^^+/%//%//+++/XC0BNN$@CC^!!!!!^+%0B$$@M######BC0C%/^+0$@0CNXX@@C%++^^
@X0C+/CCXC%+%XXC%%++00CX++!^^^+++^^/+$MM####MN$$@0@CX+!!^!%+//+/X0@X+^^^^^^^/$#M$N0X0@X$00C%%+++++%B########MM#M##MMNB$C!!^^/X@@$CCX%X@NMB0XX/!!!!!!^+X@$N$@0X0@@M######B$0//+^/N##M$0@M#B%^^^/+
X@0CC%^/CCXX//%%%/%//+^^^^!^^^+^!^^+XN#MMMB$C%%%XX%%+/^^^!+^++/%XXX/@X/^^^^^^^%N#M@NMMN#M#M$$BB$0CCXN############MNB$@X%!+/XC%%/XX@$N$C/^^!!!!!!!!^%CNB@@@@@$@0@B########MB@X%^%%BM@CXXBBX!^/+/%
CCX0CX/+!//%%+^+//%//+!+^^+!+/^!!!++XNB$X/+++//%X%%%%%+^!!+^++///X%^!+BBC^^^!^^/BMNNBMM###BN######N0N###############MN@%^^^+/XC0$@/^^!!!!!!!!!!!!XMMMMNNMMM##################M$0CX0@@@C%+!!^/%XX
/XX+^^X+^//++/^!!^^++^!!!^%+0@%!!:^//%+^^+//////%//XC%X%/++^^^^+%%%+!!^%NMNC^^^^^CM#MBX0$N@BM###MN@$####################MB@@@$$$/^!!!!!!!!!!!!^X$N$MMMMMMM###########MMNB@00@BNMM#MNBN$@@%+C0XXC
/%+^^^/+++!^^:^+/^^^!:+^!!//XX+^!!!X+^+++//////%/%+%XCX%XXC%X%%/+!+^!^!^%B##M$0X^^/BM#N%%CB/%XXX%%@MNBBNMM################MBC/+!!!!!!!!!!!^/%@NB0N@MMMM#M###MMM##MMN0%^C$NM###NBBBNMMM#N/CM####M
++!^+^!^^%X@B+!^^!^:!+^^^:^^%%!^^+^!++^/+/++++//%%/^%XX%CC0CXXCXXCX%%/++++/NM###NC/+X@MMB$B0/+^!!^^+^/XC@BNM#############$+!^!!!!!!!!!!!+CBMMMMN0N@MMMMMMMMMMMMMMM0XC%0NM#MNBNN$@@@BN#N^+B#####M
!!+^^!!/@MMM$/^+++^^++^:!:^+XC^^+!^^+%+/%/%X///%%%/+^XX++%XXC+/X%XXXX%%%/%X//CBM##NC+^0M###MNX+^^!^+/%C$NMNBN#######MMB0X+!^^^!!!!^+/X0$MMMMMMMN0B0MMMMMMMMMMMMB@+^%@NMMMM@//+^!!!!:!^!'XM#####M
^^!++/+@####M0/!^!:!^!!:!!^C@/!^/^^%/%X%CC%/+%%XX%%/^+0/+^/%%+/%/+X//%%%%%%+%//+^/@MB0/+B####M$@@000@BNM##N0XX/^^^^^^^!^^!!!^!!!+0MM@N@MMMMMMMMMC@$NMMMMMMMMNC^!!!:::!^C0%!!+^^^!!::!:::XNM###MB
+++^%C$MN$0//^:!+^^!!!!^!:%0%^^/+^/X/%/////+%/+^^+^++^X+^+++//%+^%//+////%^///^!^^!%N#N/+@N############N$X^^^^^^^!^!!^^^^^^^^^%$MMM#@$0#MMMMMMMM0C$NMMMMMMBX^!!++!^!:!!::!!^++^^!:::::::/XXCC000
X%++%0%+^^^/+!^^/+^++!^^+/XC!!^/+^/%+//+++%/++^++^/+!++!^^+++/+/+%%/+/++++^+/^!!+++/XN##$^!^+%B#####N0+!!!!!!!!!!!!!!!!^!!^+0N####M#$CX#MMMMMMMM0XBNMMMMB0+CX:!!+^!::!!!:!!!!^!!!:::::'!!!!:!!!^
XC/!^^!/+X%//!!++^+^!^^^+X%^^!/%++%+//+/%%+^++++%X0@CX//%^++!//+//++//+++^+++^!:!!^^+%M##B%^^^^X@0/^^^^^!!^^!^^!^!^!!!!^^^+N#####M##N0X#MMMMMMMM/X0$MMM0!/%0/!::/!!!!^^^^^X%//++!!!:!:::!^^^/+:!
++//!++//X0%+^^!+^!!!!!^+^^^^+/++/%%++++%+++/+/C$MM#MMB@C+^^^/%C%%%+%+^+!+^^!:!!:!::^^XM##N0%^^^^^^^^^^^^^^^^^^^^^^^^^^+CBM#########N0@MMMMMMMMN%%X@MM0+CC/+!!/@MC!!//+^+^^+//+^!::!::!^!++%%C!!
C+!/%%C00XX%/++%XX%+^!^!^+^+++/++//++%%+%++/X0BMM######N0/!!!+++++/+%+^++^^//+!:!:!!!^!/B###MNB+^^^^^^!^!^^^!^^!^^^^^^X$############M0$MMMMMMMMN/%%@M0^%%+!!/NMMMN/!^+^!!^^^++!!::::::+!++!+/!!!
+/%0@0@@0/X+!!!^!!+^+^!+++/^/%+/%//^%+!+^/%$NM########MM@%:!!/^+//+//+!^++^+/^X+!!!:!!::+@BM###/^^^^^^!^!^!!!^!!^^^^%B##############MX@N#######M%%%@M+^^!!:^$MMMMM+:::^!!!!^!!:':::::+!!+^::!!/+
X0B@@0$@C/+^^^+^+^^++^^++++/^++//+%/+++%%%/MM##########MB/+!:+^+/+//X+!^^^!^%!^X^+!^^^^+!+/C###%^^^^^^^!!^!!^!^!^^^%M###############MX0B######MMX%%00^+/^:+NMMMMMX::!!:::!!:::::::::!:^%C^!!!/%0
$BNB@B$C/^!^+++/+^!^^++^++^/+++^++^^/%///X/N###########MBX/!!!+++^//%/!^^^+!%^!X!!!!!^!!+//%N###B+^^^^^!!!!!!!^!^^%M################MC/B#######MC++%!^%+:/NMMMMB^:!!!!!::!!!!::::!!!/%/+^::^/%BN
BB$$0C0X/!!!!!!^^^+^+!^^^^^!^^^^++//%/XCCC%CM###########NX+!!!+^+//%%%^!+^!^%/+C%+^^^^^++^++/XM#@^^!!!^!!!^!!!^^C$M#################MC+@BBNBNBBBX++!++^^BM#MMMN^!!:!^++^^^!!:::::+++/^'::^+%XN#N
$B$0XXX%@$$$00000@0XCXC0C^^^^^++///+//%0CXCCXM#########MNC%^!!/+++++//+!^!!!++^+%%X/%CCC%/+^++0N+!!^!!!!!!!^!/@M####################N0%XCCXXCX%%+^!%/^!CNNNN0/^!!^+////+++^^!::^//^!!:/^/%$N#MMB
0CXX%C@$$@$B$@@@@CC@@C%%%X+!^+/%+++%+XXX%/XXXXMM######M#M@X!!:/+++/+///!!^!^^!^!^!^++^/XXCCXXX$#%^^^^^^^!^+C$###############MB@0XCX%//+/+/^^^^!^^^/X^^!!^X/!!/X@BMMMMMMMMN$%^X^::!!:::/++0M####B
NNBBM###MB0C%XC0@CXXCC%XX/%^!^+!^/++CXX%X%XXCXXMMMM#####M$//:!++++/////!!^^!^!!!!!^!^^!^^+///XM#@^^^^^^^+CM##############N$00@BB$$@0000@0000C%/+++/^/+!^^//0BM########MM0+^+X!+^:::!::+++0NNNMMB
#########N$00CXXXXCX%XCXX%%+/+^^^/+%X%%/X%XXC0X%M#MMM##MM$%%!!!/^/+//+/^!!^^^^!^^!!^!^^!^^!^!CM#0^^!^^!^$###############$@M####MMNNNNBNMNNBB$C%CX+%+!/!!!!^+++/X@BM##NX+C$/^!+/+//+!::!^!^!^^+++
####M#######M$0CCX//+/XXX%//%/+!^!%%///C%X0C0CC%0MMMM#MMNNX+!::/^+/%//++!^^^^^^!!!!!!^^^^^!!%M#$+^^!!!^+N###############$N#####NB@@00@$B$@@00%+/^^C%^^+++/%%XC@0C//XX+^%%0X^^CBMM@X!!!:^!+++/+/^
#####M#MM######MB$X//%//%%%////^^//+^%XXC0CCXXCX%BMMMMMMMNX/!::+++////+/^!^^!^/+%//+^^^^^!:!+CNNC^!^!^^%###########N@@$$0$M####MMMBX%%/%%+/+/^^^^^++/%XCC@0CC0CC/^+^!+++!!^/$$CX^!^++++%%%%%XC+/
M########MNM#######M$C%/%///^^+^^/^/%%%XXXCCXXX%%@MMMMMMMN0/!!!+++//%/+/!!^!!^++!!++^+^^^:!!!!/N0^^^!!^B#########MN$0X++/%CNM###MMMN$0/:!!!!!!!!^/%C0$NNNB@@@CC%/!!^!^!^^^/+!!^^^+/+%//+XX%0/CX+
############NNM######MN$C//+++^^!+%XXX/X%CXCXCC/+X$NMM#MMM0/!!!!/++/////^!!^!!+^+^^^!^!!^!!!!!CB+^^^!^0MMM#######N/+^^^!^^^%$NMMMMMBB@C+!!^^!^^/X0@BNMNN@0C%///++^!!!!!+^!!^!!!^+^+++++%/+%/%X+^
##############MMMM######MMB0//^+%%XXXX%C%%//X%++^^^+%0BMMN$/+!!!%^/+%//%/^!!^^++/^!!^!^^!+!:!!X@!^!!!^@#M#M######MMB+^/++^/X/C$NMMN$@CC%+^+//X0$BBB$@000C%///+^^^!!!!!^^!^^+^+!+/+^+/^^+^!+^^!!!
#################MMNM#####MMB+/%XXX00CCXXX%X%/++++^^!!^+X0@%+^^!%///%/%%%!^!!^!//!^^!!!+!^^:!!X%!^!!!^X#M#########M#X//%%%%%/^/C00@$$@X^+C$$NMMNB@CCCCX%/^!!^^^^+++/^+/+^/+++/////X%+%+C/X+/^+++
####################MMMN##MN///XX0C00CXXXXX//+++^//++^^!!^!^+^^!+X/////+%^^+^^!%+^!+^!^+!^^!^:0X!!^!^CMMMMMM####MM##C%X/%%%X+/+^+XCX%/X0$NBNBN$0XX%++^!!!!++/++++++/////+^/%+/%/X/%%X%%/%%++//@!
############M##########MNBN@++%%0CCCCXCXC%%%+%+/++/+!+!^^^^^^^!^^+/+%/+//^!!^^!+++^^!!!^^^^^!^%^!^!^CBMMMMMMMMMMMMM#X%XCCXXXXXX/+!/X$BNNNNB$@00%/!!^^^^++++///++++^^+^+^^++!/^!/++++%++/+^^^+^+^
###############MM#########MC+%%X0CCCXXC0XXX+^!+///^+^+^^^^^+!/^:^+^+^+//%+^!:^!^//^+^^^!^+!^!@/!!^^+BMMMMMMMMMM#MMM#XC0000CC/$^/C@NMM#MMMNB@0X+^+!^%@$$$@0$$@$@@00000CCCCX%%XXXCX%//%/+/+/+/%/%^
#################MM######M#C+%/%XCXXXC0X%C+%X/++^+/%/+^^^^+^^/!^:X++/%/%/%!^!!+!%/^^^!^^!+^!/B/!!!+BMMMMMMMMM#MMMMM#C@0@$0@X%0$MM###MMMMB$CX/++/C@N###########################MMMMMMNMMMNNNNB%/!
###################MM####MMC//%%XXXXC@CX%/+XNN$X/^^^+%%/++^^^++!!++////%/%!!!^!^^+////^^^!^CN0!!!+BMMMMMMMMMMMMMMMM#C@BB@0@NM#####MMMNB@C%^!++$M############################################C!!:
#####################MMM##MX^+/%%//%X%//X//NMMMMN$X%+!^+///+^!+!^^/^//////+^^!!!!^^+/%%0/^0M@^^!^@MMMMMMMMMMMMMMMMMN0$0@NMMMM#MMMNB@CX/^++%0CXB############################################B^!!!
#######################MNNMC^%%//+%C%%/+/+0MMMMMMMMMM$X+^^!^++/^^^/^+/+++//!!!!:^^^!!:^!^CMN%^!^0MMMMMMMMMMMMMMMB$$$MM#MMMMMNB@CX%/%/X^+0BMMM@XC$M########################################B^!!!:
########################MMN/^//++XC%///%+/0NMMMMMMMM##MM$C/^^!!++//++^/+++X^+!!!!+^!^!^^^$@+!^!XMMMMMMMMMMMMN$$BNMMMMMMN@0%C%X!+^C$NMN/0MMMM#M$X+0$M#####################################N+!!!!!
##############M##########M@^^+^^%X%/%//X^/0BNBNMM#########MB0%^!+!+^^+^+^//!!!!!^!^!!!!^0%!!!^CMMMMMMMMN@CCCBMMMMNB0X%%%XC00XB^CXMMMMC/@MMM#N$%^+^XB#####################################0!!!:!:
#########################M/!^+/%X/+//^+%//%$MMMB$NM####M##M#MN%^+^^^^+/////+:!^!^!!^!^/X+!!!!XNMMMMMB0CX0BNMMMMMB0//+X0MMMMBC$+%BMMMM%XNMMM$/!!!:+@M####################################B^!!:::!
##MMMMMMMMMNM#####M######B^!!^!!!!^++/%CX0$NMMMMMNBBNM##MMM#MM$C%+^^^^++/%/%%//^^^^^%00+!!!^@MMMNB@%X@NMMMMMNNB$@%%+^X$MMMMN@$^XMMMMM$+@NN0%^+@++@####################################MNX!!!!!!!
#MMMNMMMMNMNM###########B^!!!!!:!!!!!+$NMMMMMMMMMMMMMBBBMM##MMNNMMNBB$$$$@@$B$@@00XX$+!!!^X@XX/+:::^%$NB$C//^^!!^+^/@MMMM#MMB$$MMMMM$%+%X%+^+M@^B###################################MX^!!!!!!!:!
#NNMMMMMMMMMN#########MM+!!!!!^!!^^^!!!/0MMMMMMMMMM####MB$$MM#MMMMMMMMNNNNB@00$$$$BC+!!^^@M@+^+^+/^+/++^^^/+!!^+//X0BMM####M####NC/^+///+^X@M#MM################################M$X+^!!!!!!!!:!:
#######################@!:^!^^^++%+^////!+X@$BBNMM########M$BBMMMMMMNNBNNNNNNN$@@0$^^!^/NMMNN$0X/++^^++/CX%^^/%0BMM##############MB$@@$BM######################################$+!!!!!!!!!!!!!!:
######################MN+!!!^+^^!!^^^+/%++X^+!!!!/@####M###MMM$$$NNMMNBBBMBBNNNNNNC^^!^BMMMMMMMMMNB$$@@$X++X$N################################################################$+!!!!!!!!!!!!::!:
''''''''''''':::::::::::'.............'.:::'!'::''^+^^^++^++++^+^:+++++++++^++++++:'''!++++++///////%%+':^/%%%%%%%%%%%%XXXXXXXXXXXXXXXCXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+::':::':::':::'''.