#####################################################################MMNNNNNNMMM################
###########################################################NNB$BNNNNBBNNMMMNNNNMMM##############
########################################MMMM##############MB##$0BMMNNNB$@BM#MMMNNMMMM###########
##########################################################M%/@BNM##MNBBBBB@B##MMMMNNNMMMMMMMMMMM
######################MMM$$N##MM##N$000@$NM###############NNMM#######MN$$BB@BNBMMMMMMM#####MMMMM
##MMMMNNN###########MMMMMMNB$NN0%^^^++///%%0B############M$@BM########MNBBB$@NM#################
NNM####B%$#########MM####M$%/@^!!^^++///%%%XC0$M#########N/%C$MM########MMNB$###################
#BBM###M:X########MBMN###%/^^0/^^^+++///%%XXC000$MMM######%+/C0BM######MMNBNB$M#################
##NB$X0B@##########BNNNNN%++XX^^^+++++///%%%XC00000@BM####MX+%C/@NMMMMMMNNC$NN########MNNNM#####
####################N$0/%0//+^^^++++++++++++//%C@CXCC0B#####BC%%C@BNNBNBBN###########BNMB0$N####
#######################MMM%^^^^++++++^^!^^+%XC000@@@@@$$M#####MB$$@NB$CBMNNM########M00M#MNN####
##########################B^^+++++++^!^/XCX%XB@CC@@@@0C%XM####MMMMXCNMMBBNB0B########M$$BNM#####
###########################0+++////+^/C0!:^/XCCCC@$B@++%C$########M0@BN0%NMMB###################
############################X//%/////%0^!+%C000CX@$B@/X@@0M#############NNNM####################
##########MMB###############M0%C$0///%X%%X0@@00CC$BBB$$$@@M#####################################
#########N##C@###############NN@$0BC///%XC0@$$$$BNBB$@@0@$$$N###################################
#########MB@BM###############MNNB0C%C//%XCCC0$$@0CXXXC0@$$$@0B##################################
###############################MNXX/%/%XC00@0X/%%XXC0@$$BB$$@0N############MMMNM################
###################MM$M#########NC0X0%%XC@@X/%%XXCC00@@$$BB$$@@N########MMM$@@$N########MB@B####
##################MM#0%M##M######$C%C0XXCC/%XXCCC000000@@$$$$$$N#########MNNBBNN########M0C@M###
##################MBC0$#####MMNMMMMM$@@XX%%XC00000@@$$BBBB$@N####MMMMM##M000MMNB$@@$#M0C@@%XBBNM
####M#####M##############M##NBBNNNNNN0X%%%XC@BN$BNNNNNBB$@@M############M00@N0NMN0@$BN$$@C%X@$$N
####################MMBBMMMN$$@@BNNNNNC%%%X0@$@$BNNNNB$@@@N############MMNBN@X@NMNNBBNB$$@$$BBBN
MMMMMMMMMMMMNMMMMMMBBMBMMNNNB@@BNNNNNNN%/%XC@BNNNNNBBB$@@MMMMMMMMMMMMMMMMMMMM0^X$BNNMNNNBBBBNNMM
MMMMMMMMMMMMNB$$BB$0@MMMMMMMNN0%0$NNNNN@++/%XC0$BBBB$@@0CNMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMM#
MMMMMMMMMMM@X0$BBNNBBMMMMMNMMMN0:^@NNNN@':^/%XC0@$$$$@@00C0MMMMMMMMMMMMMMMMMMMMMM$BNMMMMMMMMM#M#
NNNNNNNNNN$0C@BNMMMNBBNNNBBBNMMB/00BNNB'   .!$0CC0@$%C00CXX@NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNM
NNNNNNNNNN$@$BNMMMMMBBNNNN@@XX0++CCBNN!    .CN0$B$@@@/00CCXX$NNNNNNNNNNNNNNNNNNNNNNBBBNNNNNNNNNN
NNBNNBNNNNNBBNMMMMMMNNNNNNN$0%%:X$NNNNX.''.!BN^+B@0@$%C0CCXX$BBNNNNNNNNN$$$$0XX@$NNNNNNNNNBNNNNN
NNNNNNNNNNNNNNNMMMNNNNNNNNNNNNNNNNNN$%:  :^%CC!^/%XC0C000CC$B$$@0@BNNNB0@BNN$%%@@$NNNNNNNNNNNNNN
NNNNNNNNNNNNNNNBBBBN$@000@@@@@$NNNX:      .'':^+/%XCCC000@BB^$0/%XX0BNC/C@BNNNNBB@BNNNNNNNNNNNNN
NNNNNNNNNNNNNNMNN$+^%%%BMMMMMMMNX.  '     .':!^+%%XXCCC@$NN%.+:^+/%CC@%.:'XBMMMNNBNNNNNNNNNNNNNN
NNNNNNNNNNNNBNNMMB0'+%%NMMMMMMB!  ':.    ..':!^//%XXCC@BNNN: .'!+/%XCCC+^!/@NNNNNNNNNNNNNNNNNNNM
BBBNNNNBBBBB@$$C$$C:%%XNMMMMMN: .'!:     .'':!+//%XC00@$NNB. .'!^+/%XCCC$00@$$BBNNNNNBBBBNNNNNNN
NNNNBBNNNNNNN$@CC@@0X%XNMMMMMN'':^^     ..':!^^+//XCC00$BN$  .':^/%CC00CCNNNNNNNBBNNNNNNNNBBBNNM
BBNNNNNNNNNBBBNNNNNN@CXNMMMNNNC!++.      .''!!^++/%%XXC@$BB''^%0$B$$@000$BNNNNNNNNNBBNNNNNNNNNBN