################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
##############################################################################################$$################################################################
#######+~~-)##################################=%#,;####################################&`?###!`;###########$?$+`$###############$`>##############?$#############
#######!'?>'!#&>%#$?$$?$=%?####?>$#=&?=##$>=#%.-&,;?=##$>=#$?%%##&==&#??$#%%#%%&=%>$#$>?`?##%.:&#%>&#&==&##) >+`%>$##=>$####%>%?$`+>%##%>%##&>=#?`*$&>?#########
#######!'#$,-+':'*= %= %.'^###~^-'$.,:`>%'-,->',=,.:`+='-.!?`.)##*`,+,^~.&~:#~-)`-,^$,^~ ?##+'^?!':'>*`,>##: :+`-,,#-,-.&##?`-,`&`^-`%)':')=`!,;! -=';^-########
#######!`''~%^:#*'= %= %.!####?;- =.*#.*;,#?`%,!#,;#^;;';~'> &###*'#>`&#')~:#~-)'#)'?`%&`?###.*#')#:^*.####? &+`$+`=`-;`+##:^#+`$`>$`>.!#!,%'-*&$`?&.~*%########
#######!'####~-#;.= =? %.!###$`)= =.*#.!!.$>`&,;#,;#^;!'??>> $###*'#=`=&`+~-#~-)'#)'=`=%`?###.*#.!#~-*.####= &+`$>`%`!=+&##!.$)`&`>$`>^:#:^=+?^~$`>%)?~,########
#######*,####%,'.?#^'^'%,*####-'^'?,*#,*$~'.)#!'+^!#~!$~'.*?'$###),##!'':#+',,:+.#+.#;'^'?###,*#?.'^%*,####$,.+'$>'$)..^$##&^'.`$'>$'>=,',=&^^.+#^'?~,.*########
###########################################################################################################################&!+~^################################
############################################################################################################################+;*$################################
################################################################################################################################################################
################################################################################################################################################################
#############$*+##########>#>>###&)$########?$#####$)&#####################=)####)%###&*>###$?##############&)$#######################>?######>?################
#############-,>#########%^&--###= &#######$~?#####% =###+;################)'####`+###^^?###=^$#############?`&#######################^:###;)#^:################
#######$!~:&+'.)##)*#:==:%-&--#*~- &##+;:~?#-?$:~;;% :~!=.'*%-~!$#####%-~*#)'#>~:`+##*`,>;;~?-$&:~*#*;-~%#*~-`&>~~+######*~-=%-!~*#%--.:##+'.>^^--&#)~-%########
#######;,=-^$,-$##>'=`;!-= %--?`>* &##;.=~^$`+;.=-.% )+`=:,&-^%;=####$.;?'))'$`!?`+##&'!$,^+>`$,-=')-^=,:?`>*`%'!?;$####%;=-,= +)`&^~=.:##$,:$^~=.;+'?;,########
#######^:#+`#^;###$`~;.,+= %--)'#= &##;,#!,$`+~:#!.% =%`=!,#%-.^&####&`?#~:)'% =#`+###.*#,!#>`&`,~^)--#--)'#?`&+^.:#####%,-^.=`%= %')#^:###^;#^:#~:;`~^~########
#######!.+^~#^;####~`&~`&= %--=`*; &##;,#!,$`+!'+~.% =%`=!'?:;?`+??###,-)'+)'$.-)`+###.*#,!#>`$~^+;%--#--=`*;`=^)*`$+&##+`>~.=`%= %~^+':###~^%^:#~:>`*)*########
########+;)$#)>####?)#=)#&!$++#?;+!$##?)#?)#!%#*;~,$!&$!&&!)&*;+#:!###&*;>#=*#%!)*=###*=#)?#%!$$);)$+>#+>#>;+!$=!!=#.=###);+*&!$&!$$!!)>###=;?+>#+>#?;!%########
##############################################=.^'+##############-%################################################%-###########################################
###############################################$%$##############################################################################################################
################################################################################################################################################################
################################################################################################################################################################
##########$.?#############$.?#####%.%##########>,######&&#;:#########%$###)^######&&###################################:>############$~=$%#########-!=.&########
#########%&`>$$#$$$&$%#$%#$`>%$###% =&$#&$##%&#+`#$&##$~~$-~&&###%&#&`)###*.##&%#$:^$##$&#$&##%%#####&%##&$#&$$&&&&##&$+%&$#$&#$%$####)&+`%####&%##~:=`%########
########~.^ >:~#:~>`~.,^'-$`,,.&##% =^:#~:%.^')+`='!##?''+-'~`*%.~'*!`,%##*.#;.,^?.'*##>`$>`&^^,~###*.-'%^;#^;*`'*`>?`%.*:~#,;?'^'?##$`+^`-###~,,^#~:=`%########
#######= =$`>:~#:~> $+`$)'$`>#')##% =^:#~:;^#?++`':####--#-~#-~$)*^^#`+###*.%`;)`>;^###>`$>`&.-)?###:,*>$^;#^;*'$#-:;~#.*?`?`%^,)^~##$`>>`$###>*:`&~:=`%########
#######= =&`>:~#-~> $+`#)'$`>#')##% =~:#^:;,#=>+`-'&###--#-~#:~+'?-^#`+###*.%`;+)&;^###>`$>`&>+-'$##?+!`?^;#^;*'##?''>#.*#,,~#^^++?##$`>>`$##&`))`&~:=`%########
########~'^`>+`^.~> $+`#)'$`,,.&##% =*`^':%.,')+`#-,$##*`*-~#:~?`~.,#^.=##*.#;'^,$)`!##&',,`&^^^~###!.~.%!`^';*'###,.##.*#) >#?.,.>##$`>%`^##$.,^`%~:=`%########
#########&$$##&&$$#$##$##$#$#&#####$##&$$$##&$##$##$####&$$$#$$#$&$$##&###$$##$&###&$###$&#$##&&#####$&###&$$$$$###$$##$$##$####&$####$##$&####&#$#$$#$#########
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################
################################################################################################################################################################