+^^!^^^^^^^^^^^^^^^^^^^^^^^B#########M$@N###B0X/+^+/X@0@XC%^+^^+++^^!!!::!::!:::::::%!::::::'!!!
##MNNNB@0%^^^^^^^^^^^^^^^^^C#######NX/X$N$@0/^^+^+/@/$C%!M#C.!:'$%.^:'@B!.+.!N!.XM+  !MC 'NM!:!:
##########@CCX/^^^^^^^^^^^+M######MC$NXX@MMM%++++^+X%%0^:B@+:/C0X:!M+.X!'%NX%0!!@C!%'^M+'/NB::!!
################N/^^^^^^^^^C#####MC$B#M$MM#M/+///++/X^C%'/::'^.^:!^^+:+!:'^'!.^+.+^.+.^'^'!+':::
##################$C/^^^^^^+M###MC++%/0N0$B$+//%CC+++/X+'/::.^.^+::/^'/::'^'!:/+.++.^.!'^!'+':::
######################N@%^^+N###N0@+^^+%/XX%+++////%%X%^!#0+CC.!0.:B'.@!:0@^%%.+0''!.'$''CC0::!:
######################M0%N+^X####M$C0C%%X%XXC@B$$0X/+//^:0%.  .%0:  '%@%.. !C. /..C% ./    C::!%
###N$@C%CC0@BM#######NC%@#$^^+X####NXC0%+/+X0%XB####MB$0XX%/%%C%%%%0X%XXC0CCX%%+++CB+!!::::::+/X
###C!!!^++/%X0######N%/BC0#C^^^@#####$+!!^+///%@@B#########MN$@C@CX0BX0%%XXXX%X+/+X@+!!!!!!^CN$C
#@X^^X%X@%+/C0$M###B%^X@/+%B+^^X######BX+XC+^++/@$@N##############MB$0CC%%XX%%/+/%X!!!!^X$MNB@@0
##M0@0$M$@0X%X00CX//XC0CC%^X/^^+C@#####M@XX$0+^++/C@0N#####M@$$N########NB$@X%+%$^!!/X$M#MMMMNB$
N0%XBBX@@@%%XX/++%//%XCBN0++@+!^^^%#####MN0%0B0^^^+/C00M##NBCXCB###M@N########$%^^XB##M$C0C%/C0@
//%/$@/+XX%%CX/^/%C0N#MMM@+^/C^^!^^%%$##MMB$0%0X^!!^+//0########N$XXB###MNMN0+!!%B####0@C+/%%CCX
X0@X+0/%/00X+%X/N#MN$$M##N%^++%%^^^^^@###MMNN00/!::^/0N#####M@%+!!+///+/XC%!!!^XN###M@X+/@N$$@++
0XXC%/XX/%@C+^+//%X@$NMNB$%!!///C%^^^^@#B0CCCXXXX@NM#####MMB+^/CX%/C0C0X%+^/XX0@B###$C/^BB@0B%^+
CCX+%%///%+^^^+^!+@N@X%%X%/^!++/X/%C+^^XMBMM#BNNB0M######MBX^/XX0XX+^!!!^0BBBBBBM####N@XC$0CX^/%
%/^/+^^^^^^!!/C+!+/++///%/XX%//+/+^^$NC/+BM00@@$@$MM########MBCX^!!!!^/0$BMMM####M$0BBNNNNNBX@$$
^^^^C$C^^^^^!^X^^^//////%+%%XC%XXX%//X@MBX%NNBX^!^/0BNM####N0^^!!^+%@MMN$BMMMMMM$%0NM$CX%%C/0##M
+^%@N$C!^!!!!X%^+/%%%/%//+^%+///+%/%%//+^CBX@M#NBBNMBX/^^^^^^^^/@M$BMMMM0BMMMB%^^!!+/!+^!:::C$B$
X+/++/^^+^^^/%!/+/////++/X/++++////++++!^^X#@++0B0X^!!!!!!!^!%N###@$MMMMX$MNXX+!^!!^^++^!:::!!^!
/++%XX++/+!^^^++/////+%@N#MN%!+%///^^^^!!!^XMN0/^^^^^^^^^^^XB#####$BMMMM%CN/%^%$B^+^^^/^:::^^+/!
%0@@X+!^^^+^++++//++/0M####MC!^+///!+^+/^!!!/@#@^^^^!!^!^^B#######$$###M%CX+!/MMB!:!!!!:::!^+:^%
BB@0+!^+^^^^^^^^++/%XCM#####@^!++/%^^^//+^^^+/@#X^^!!!!^%B########$CNMMN%+^+CMM@!!^!!!::!^/!!^CN
@CX0@$@@0CCX%^^/+//XXC0M###MB/!+++/^^!^^+//XX//B+^!^!+CN######MB$@C/%//+^/+^0C//C0@00%^!^!:+%N#N
MM##N0CXCXXX%/^^+/X%%XCCM###N/!++//+!^^!!^^^^+/#%^^^0#######BBBNB$$B$$C%//+!^/0$N#M@C+++^^:^/CCC
##M###M$0%/%%//+^//XXCCX@MMMN%!^+//+!^^++^^^^!CN+!!+M####MBN$##MN@CCCX%+^%+%XXC0/+++/+C@X+^^//%+
#####MM##MB0%++^+/X%XCX%XNMMMX!^+///!^^+^+^^!!!@/^!0M###MC%^+CNMMN@/!^!^%0BN$CX%+!!^^^!^^+//%X%/
#######MMM##MB%/XXCXX%%+^^/C$C^!///%+!^++^^^^!!X!!^BMM###M///%/0$$@%/C@B$@0C%++^^^^+^+++//+/++^^
##########MMMN+%CCCXX%/+++^^^^^^///++^^^+^^^^^^%!!CMMMMMM#XXXX%/+X0@BB$C/+^^^+/+++++^+++//%//++/
#############$/%CXXCX/+++/+^^^+!++///!!^/^^^^^X+!%MMMMMMMMC0@0XCBMMMN0%+%0NNBNNNBBB$$@$$@0@000X+
##########MM#$/%%%C%%XMBC/+//+^^^+///^^!^+//^C0!/MMMMMMMMM0$$N##MN$X//%N#####################M+!
############M@+//X//+$MMMMN@%^^+++++++^!^^!^%@^+NMMMMMNNBNMMB$@%%0@/NMNC0M##################M/!!
############M/++%//%+@NNN####M@^^+++++!!!^!+/!+BMMB@@$MMBC%0$$@/BM$CMMC^^$##################@!::
#MMMNNM#####$!!!!^+0$NMMMNNNM#M$0CXCCCCX%/X+!/00X/0NB0CX%+0MMM$CMM$%@/%X@#################NC^!!!
MMM#MMM####N!!^^+^^+X$NNMM##NNNMMMMNNB$$@0^^@NC%++++//^%0$M#####BCXC0B#################MC+!!!!!:
CCCCCCCCCCCX::::'::!!^!:!C00000XX00CCCCC0^:/000@00C%+/0@@$$$$$$$$$$$$$$$$$$$BBBB$$$B$$@+::::::::