######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
#################Mnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn#########################################
#################n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#########################################
#################x++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################
#################x++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################
#################x++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################
#################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################
#################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z#########################################
#################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z#########################################
#################W++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z#########################################
#################W++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n#########################################
#################@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n#########################################
##################++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x#########################################
###################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M#########################################
###################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M#########################################
##################z+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++W#########################################
##################n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@#########################################
##################x+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################
##################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###########################################
##################W++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z##########################################
##################@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n##########################################
####################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x##########################################
###################z+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++W##########################################
###################x+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@##########################################
###################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++############################################
###################@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n###########################################
#####################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x###########################################
####################n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++W###########################################
####################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#############################################
####################@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z############################################
######################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M############################################
#####################x+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@############################################
#####################W++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z#############################################
#######################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M#############################################
######################x+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@#############################################
######################@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n##############################################
#######################z+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++W##############################################
#######################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++################################################
#########################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M###############################################
########################x++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#################################################
##########################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M################################################
#########################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##################################################
###########################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M#################################################
##########################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z##################################################
###########################z++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@##################################################
###########################@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x###################################################
############################x++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z####################################################
#############################z++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@####################################################
#############################@#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++M#####################################################
##############################M++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n######################################################
###############################n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++z#######################################################
################################z++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@#######################################################
################################@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@########################################################
#################################@WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW@#########################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
############WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@###################################
############W#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x####################################
#############W#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x#####################################
##############W#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n######################################
###############W#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++x#######################################
################W#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#W########################################
#################@n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n@#########################################
###################Wz++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++zW###########################################
#####################Wz+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#nW#############################################
#######################@xz+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#zM@###############################################
##########################@Mn#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++zxW###################################################
##############################@Wxnz++++++++++++++++++++++++++++++++++++++++++++++++++++++++znMW#######################################################
####################################@WMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxM@############################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################