######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
#########################################################################################@@@@##########################@W@@###########################
################################################################################@@@@@@@@@@@@@##########################@W@@###########################
############################################################################@@@WWMWWMWWW@@@@@@@@@@#####################@MW@@WW########################
######################################################################@@@@WWWMMxxxMMxMWWWWWW@@@@@@@#######@@@##########@MW@WWM@#######################
#################################################################@@@@@WWWWWMxxxxxxxxnxxxMMWWWWWWW@@@@#####@@@@@@#####@@@MM@WMMW#######################
###########################################################@@@@@WWWWWWWWMMMxxMxxxnn#znnznxxxMMMWWW@WWW@@@@WWMWWW@@@@WW@@MM@@MMW@######################
#########################################################@@WWMWWWWMMMMMMxxxxxxnnzznzznnznnnxxMMMWWWWWWWWWWWWMMMWWWWWWWW@MM@@MMM@######################
#####################################################@@@WMMMMMMWMMMMMxxxxxxxxnnnnnzzznznnznnnxxMMWWWWMWWWWWWMMMMWMWWWWW@WxW@WMM@######################
#################################################@@@WWWWMMxxxxMMMMxxnnnnnznxxnnznnnnxxnnnnznnnxxxMWWMxMMMMMWMMMMMMMWWWW@WxW@MMxW######################
##############################################@@WWWMWWWWMMMxxW@WxMWW@@@#######@@@@WMMxnnnnnnnnxxxMMMMxxxMMW@####@@WWWWW@WM@@WMMW######################
##########################################@@@WWWMMWWWW@@#################################@WMxnxMMMMMMxnnxM###########@@WWx@@WMM@######################
########################################@@WWWWWW@@############################################@@MMMMxxnnnW#############@Wx@@WMM@######################
######################################@WWWW@@#####################################################@Mxxxnzx#############@Wx@@@WM#######################
####################################@WWMW@##########################################################@MMnzn@############WWx@@##@#######################
#################################@@WWMW@##############################################################@WnnM############WMx@@##########################
###############################@@@WW####################################################################@MM@###########WMxW@##########################
##############################@@##########################################################################WM@##########@Mn@@##########################
###########################################################################################################@@##########WxnW@##########################
#######################################################################################################################WxnW@##########################
#######################################################################################################################WxzW@##########################
#######################################################################################################################WnzW@##########################
#######################################################################################################################WnnW@##########################
#######################################################################################################################WnnW@##########################
#######################################################################################################################MnxW@##########################
#######################################################################################################################M#xW@##########################
######################################################################W################################################M*MW###########################
#####################################################################@@################################################xzW@###########################
####################################################################@@#################################################xxW@###########################
###################################################################@W#################################################@nMW@###########################
##################################################################@@@@################################################@zMW@###########################
#################################################################@@#@@################################################W#MW@###########################
################################################################@@##@@################################################W#MW############################
###############################################################@@@@@@@################################################M#WW############################
###############################################################W@@@@@################################################@nzW@############################
###############################################################M@@@@@################################################@#xW@############################
##############################################################MW@@@@##############W##################################W+xW@############################
#############################################################@M@@W@@##############MM#################################M*xW#############################
#############################################################Wx@@W@@##############xx@################################x+xW#############################
############################################################@WMW@@#@#############@nxM################################z#M@#############################
############################################################WWMM@@###############@nMM###############################@+zM##############################
###########################################################@WWxW@@###############@nMM@##############################W+nW##############################
###########################################################@WWx@@@################nMMW##############################M+xW##############################
##########################################################@MWWM@@#################xWWW##############################MzMW##############################
##########################################################WzW@M@@#@###############xMWW##############################xnM@##############################
##########################################################M#W@M@##@@##############MxWM@#############################xxM@##############################
##########################################################xnWWW@#@@@##############MxWWW############################@nxW@##############################
##########################################################nxWM@@@@@@##############WM@@W############################WzxW@##############################
###########################################################W@W@#@@@###############WW@@M############################W#xW###############################
#########################################################xnW@W@@@@@###############W@@@W@##########################@M+MW###############################
########################################################@nW@@@@@@@@###############W@@@@M##########################@M+M@###############################
#####################################################@@WWWW@@WW@@@@###############@@@@@@W#########################@x#W@###############################
###################################################@WWWWW@@@@@W@@@################@#@@@@M@########################WznW@###############################
#################################################@WW@@@@@W@@@@@@@@#################@@@@@@M@#######################WzMW@###############################
################################################Wx@@WW@@@W@@@@@@@####################@@@@@M#######################WzMW@###############################
###############################################@M@@@W@@@@@@@@@@@#####################@@@@@WM#####################@W*+*+W##############################
##############################################@@@@@@@@@@@@@@@@@@####################@@#@@@@WW####################WMzx#+n##############################
############################################@@@@@@@@@@@@@@W@@@@#######################@@@@@@W@##################W@Mx@W@@##############################
###########################################@x@@@@@@@@@@@WW@@@@@#######################@@#@@@@x@#################Mx+izzz@##############################
###########################################@x@W@@@@@@@@WW@@@@@@########################@@@@@@@x################n+*znMM@W##############################
##########################################@@M@@@@#@@@@WW@@@@@#############################@@@@@W###############WWMMninW@##############################
#########################################@@@M@@#@#@@@@WW@@@@@#############################@@@@@@@#############@n*++xMWMnW#############################
########################################@@@@W@@#@#@@@@W@@@@@@############################@@@@@@@@@############Mxii*izx@xn#############################
#######################################@@@@@W@@#@##@@@@@@@@@#############################@@#@@@@@@@#############@MM#***WM#############################
######################################@@@@@@W@@@@##@@@@@@@@@###########################@##@@@@@@@@@@############@###@@M###############################
#####################################@@@@@@W@@@@@##@@@@@@@@##########################@@@@##@@@@@@@#@@###########@######Wn#############################
#####################################@@@@@@@#@@@###@@@@@@@@###########################W@@##@@@@@@###@###########@@@####@M#############################
####################################@@@@@@@###@@@##@@@@@@@############################@@###@@@@@#@###@#######@@#@WW@###W@#############################
###################################@@@@@@@@####@###@@@@@@@##################################@@@@@@###@@#####@@@#@MW@@##@##############################
##################################@MW@@@@@@####@###@@@@@@@###################################@@@@@@###@####@@@@#WMWWx##@##############################
##################################W@@@@@@@#####@@##@@@@@@@#####################################@@@@@###@###@@@@@WWWxn#################################
#################################@@@####@@######@###@@##########################################@@@@@@@@##@@@@@@MWWz@##@##############################
################################@################################################################@@@@@@@##@@@@@@MW@###################################
###############################@@##@@@@@@########################################################@@@@@@@@@@#@@@@MW@+###@##############################
##############################@@@@@######@@@#@@@@@@###############################################@@@@#@@#@#@@@@MW@+###@##############################
##############################W@@##@@@##@@@@@@@WWW@@###@@@@#########################################@@#@##@#@@@@MWW####@##############################
##############################W@@@@@@@@@@@@@@WWWn@####@@@@##########################################@@@@##@#@@#WMWxx###@##############################
##############################W@@W@@@@@@@@@@@@@x#@@@@@@@###WWxW##########################################@#@@@#WMWzW###@##############################
##############################WWWW@#@W@@@@@@@@Wx+@@@@@###Mx@#Wz*M###########################################@@@MM@#####@@#############################
#############################@@W@#@@W@@@@@@@@@xW+W@@@###Wzz#nW#Min######################################@@##@#@MW@#####@W#############################
#############################@M@###@W@@@@@@@@xMW+W@@###MW##@xz##@x*nW###################################@@##@#@MW@######M#############################
#############################W@@##@M@@@@@@@@WMWx#M@###@n+M###@z#@#@z#M##################################@###@#@MWW######M#############################
#############################M@@##@M@@@@@@@@@@WxxW###@@#@MnW###Wz@#@x*W#################@###################@#@M@xn####@M#############################
#############################@@###x@@@@@@@@@@@MM@####Mnx@#@Mx@##@#zW@@+x######################################WM@zM####@W#############################
############################@@###@M@@@@@@@@@@WM@#####@@n+W##Wx@##@n#n@M+n#####################################WM@+@####@W#############################
############################@@###x@@@@@@@@@#@M@########@xzM##@xW###W++@Wzx##############@#####################WW@*#####@W#############################
############################@@##@x@@@@@#@@@@@@##########@xx####x+x@#@z+W@xM##############@####################W@@+#####@@@############################
############################@###MW@@@@@@@#@@@############@xM####@##@#@nxW####################################@W@@+####@@@W############################
###########################@@###x@@@@@@@@#@@###############nz@###@M+z@#WMW###################################@@@W#####@@@@############################
###########################@@###x@@@@@@@#@@@###############WnnM####xnn###M####################################@@Wz####@@WW############################
###########################@@##WW@@@@@@@#@@#################WMnx@###WMn#######################################@@Mn####@@WW############################
###########################@W##M@###@@@@#@@###################@MM@####@######################################@@@xW####@@M@############################
###########################@W##M##@#@@@#@@######################@W############################################@@z@#####@x#############################
###########################@x@WW########@@####################################################################@@n######@x#############################
###########################@M@x@########@@####################################################################@@n######Wn#############################
############################M@M@#######@@####################################################################@@@M######Mx#############################
############################M@M@@##############################################################################@W######Wx#############################