%%@@@@@@@@@@@@@@@@@%@%@@%@@@%%%#%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**#%%#############################**#****#*******************++++**++++=+*##**++++*#####********##%%%%%%#*##*******#####**=:-===========++++++++++++++**+++***+++++*********+*******+-------=++=--==::
%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#%###**#%%##################################******************##****+****+++++*##*++++**##%%##****+**##%%%%%%#*##*****##*####**=:-============+++++++++++++**+++***+++++*****************+------=++=-::-==-
%%%@@@@@@@@@@@@@@%@@@@%@@@@@%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**#%%####################################*****************#****+****+++++###+++++*****#*********##%%#%%%#*###*******#####*+:============++++++++++++++***+*****++++*******+*****#++*+---==++=--:----=+
%%%%@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**#%%########################################**#****#****************++++*##***++++****#*****+**###%#%%%#*###********###**+:-==========++=++++++++++++***+*****++*********+****##+**+=++*+=----------=
@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*%%%########################################**####**#**###*********+++++*##**+++++***#*********##%#%%%%#*##*******#######+-==========+==++++++++++++****+*****+***+***********####****+=====---------
@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##*%%%%#################################################*###**********++++*##******+*************#####%%%#*##********#####**--=========++=+++++++++++++***+*******+*************########***************
@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%######################################################*#*#******+++*##********************#####%%%#*##********#####**--========++=++++++++++++++***+*********************#######****************
@@@@@@@@@@@@@%@@@@@%%@@%@%@@%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*#%%%###########################################################****+*++*###*******************###%#%%%#*##********####***--=========+==+++++++++++++***+*****+***************####***************++**
@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*#%%%%######%%##################################################******++*####**************++++****+++++++++++++++++++++++=====================++++++**+++***++++*++*****+****####%%#################
@@@@@@@@@@@@@@@@@@@@@@%%%@@@%%%%%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%####%%%%###################################################***+++++**++++===----======================================+==============================================+########################
@@@@@@@@@@@@@%@@@@@@@%%@@@@@%%%%%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*#%%%%%%#####%#########################################*****++++====------------------===================================++=--++=========================================+*#########################
@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**#%%%%%%%%%%%#########################%%###******++++++++++++++++++++++++++++++++++=+++++++==========================++-..::.++--------==---------------=========-================================
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**###########%%#%#%%%%%%#%##%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%=:...::.:#################################*************************+++*+++++=
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#-..:...:.-%#%%%%%%%%%%%%%%%%%%%%%%%%%%##################**###############*####
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%###%%#######################################*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=:::::::::.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################
%%%%%%@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:.::=+::::::+%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#########################
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%#########################%##########################################***###%@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#-::::*#+::::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%#####***********###%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:::::+#++:::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%####
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%##**+=--::::::::.........::::::::--=++*#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@#-:::::+#+++-::::=@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%@@@@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%############################+=-::..:::::::::..:.:.........:::::::::::::::-=+*#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#=:::::=#%++++-::::+@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%@%%%%%%%@@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%###%%%%%######*+-::.:.::...:::............................::::.....::::-=+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=::::::+#*##+++-::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%%@@@%@@%@@@%%%%%%@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%#*=-:.::::..::.........................................:==:...:::::-=+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+::::::-*#+++%+++-:::+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%%@@%%@%%%%%@%%%%%%@@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%#+-::::.::::................................................:-=+=-:.:::::::-+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#-::::::=#*++++%*++::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+-:::::::.........................................:...............:-=+=-:::::::::=+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%+::::::-*#*+++++%*++:::=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######****++++++===
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%#=:::::::..................................:-=--:::::......:............:::-====-::::::::-+*%%%%%%%%%%%%%%%%%%%%%%*-:::::-+##++++++*#+++:::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**++====-------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%*=:::::::....................................::..:-====-::...................::::::-====-:::::::=*#%%%%%%%%%%%%%%%%#-:::::-=##++++++++++++=::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+==----------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%+::::::::::................................:::..::::::::::-=+=:........:::....::::::::::::=++==-::::::+#%%%%%%%%%%%%=::::::=*#*+++++++++++++=::+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+==---------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%%%%%%%%#=::::::::..::..........................:::::::::::::::::::::..:--==-:.......::::::::::::::::::::-=====-:::-+#%%%%%%%*-:::::-+#%#++++++++++++++=::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+==-------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%%%%%#+-::::::.:::.:............................:-===++++=--:::::::::::::...:-==-:...::::::....::::::::::::::::-===+===*%@%#=:::::-+*#+*%++++++++++++++=:=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+==------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%@@@@%%%%%%%%%#=::::::::::::::..........................:::::::::::-=++**++==---:::::::...::===-::::::::...:.:::::::::::::::::::--=%%+:::::=+*#*+++#*+++++++++++++=:#%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+=-----------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%@@@%%%%%%%*-::::::::::::::::::.::...:...:::.:.:::::::::::::::::::::::::=+**+++++==--:::::.:::-=+=:::::::::::::::::::::::::::::::++:::::-+*##++++++##**#*++++++++=-%%%%%%%%%%%%%%%%%%%%%%%%%#*+==--------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@%%%%%#=::::::::::::::::::::::::::::::::::::::-------======-------::::::-=***++++++==--:::::::-==-::::::::::::::::::::::::::=+-::::-++##*+++++++++*+++++++++++==%%%%%%%%%%%%%%%%%%%%%##*+=------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@%%%#=:::::::::--=========--------=====+++++****++++++++++++++++++++++===--:-=+**+++++++==--::::::=+=-::::==-:::::::::::::-+=:::-=++*#*+++++++++++++++++++++++=*+:::::::::::::::::-=+==---------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@%#=:::::-==+==--::::::::::::::::::::::::::::::---=+++*****++++++++++++++++++==-=***+++++++++==-:::::=++=-:-=+**+===-----++:::-=++*#*+++++++++++++++++++++++++=*-::::::::::::::-===-------------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%=::::=++=-:::::::::::::::::::::::::::::::::::::::::::::::-==++***++++++++++++++++==+***++++++++++==-:::=**+==--=***+++**-::=+++*#*+++++++++++++++++++++++++++**::---===========----------------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@#-::=++-::::::::::::::::::----=========+==========----:::::::::::-=+****++++++++++++++++*##++++++++++++=-::-+#*++++==*%#-::=+++*%#*###***#*++++++++++++++++++++#*+++++++++++=--------------------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%+::=*=-:::::::::---====+++++++++++++++++++++++++++++++++++++===---:::::-=+****++++++++++++++##*++++++++++++==--=***++*#+::-++++*@%#*+++++++*##++++++++++++++++++%*+++++++++=-------------------------------==-------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#-:-*=:::::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----=+***+++++++++++++*##*++++++++++++==-=*#*--=+++++#%#++++++++++++*#*++++++*++++++++*@******+=--------------------------====++++++++++=--------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#=:::-::::::==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##**++==-==+***+++++++++++##*++++++++++++++#=:=++++++*#++++++++++++++++#*+++++#*+++++++#%**+++=-----------------------===++++++++++++++++++=------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#:::::::::==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+++==+###*+++++++++*##*+++++++++**--++++++++#*+++++++++++++++++#*++++#*+++++++%*+++=---------------------===+++++++++++++++++++++++=-----------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%@*:--:::::-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###*++++**###**++++++*###*+++++##-=++++++++*#++++++++++++++++++*#++++#+++++++*%++=-------------------===+++++++++++++++++++++++++++=-----------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%+-+=-::::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###*++++*#%%@%##*+++*##*++##=++++++++++#*+++++++++++++++++++#*++*#++++++++*=------------------==++++++++++++++++++++++++++++++++=----------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@%++=:::::-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**++++*#%%%####***#%%+++++++++++*#++++++++++++++++++++*%++##+++++++=-----------------=+++++++++++++++++++++++++++++++++++++=---------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%@@%+-:::::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++*###***##%@*+++++++++++#*+++++++++++++++++++++**+#*++++++=---------------==++++++++++++++++++++++++++++++++++++++++=------------------=+
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%##**+==+@#-:::::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##**+++*#%*+#%+++++++++++*%+++++++++++++++++++++++++#*+++++---------------=++++++++++++++++++++++++++++++++++++++++++++=----------------=++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##*+==------+#+:::::-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##**+++*#@#+++++++++++##+++++++++++++++++++++++++%*+++=--------------=++++++++++++++++++++++++++++++++++++++++++++++=---------------=+++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+==-----------++:::::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###*+++*##*+++++++##+++++++++++++++++++++++++*%+++=-------------=+++++++++++++++++++++++++++++++++++++++++++++++++=------------=+++++
@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+=--------------=*-::::-=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++*##*+++#%*+++++++++++++++++++++++++*#++=------------=++++++++++++++++++++++++++++++++++++++++++++++++++++=----------=++++++
@@@@@@@@@@@@@@@@@@@@@@@@%%%#*=-----------------=*-::::-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++*##*##+++++++++++++++++++++++++++##++-----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++=--------=+++++++
@@@@@@@@@@@@@@@@@@@@@%%%#+=-------------------=*-::::=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++*%#*++++++++++++++++++++++++++##+=-----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++=-------=++++++++
@@@@@@@@@@@@@@@@@%@%%#+=---------------------=+::::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###*++*##%####***++++++++++++++++*%#=----------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=----==+++++++++
%%%%%%%%%%%%%%%%%%#*=-----------------------++:::-=+++++++++++++++++++++*############################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++*##*****##*+++++++++++++*%+----------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----=++++++++++
==================-------------------------+*-::-++++++++++++++++++++++++++++++++++++++++++++++++++*****########****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++*##*+++#%+++++++++++++%%=----------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=-=++++++++++++
-----------------------------------------=+*-::-+++++++++++++++++++++++++++++++++++++++***************************#######**+++++++++++++++**++++++++++++++++++++++++++++++++++++++++**++*#%#**+*##*++##+++++++++++*%*===-------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++
+===-------------------------------===++++#=::-++++++++++++++++++++++++++++***###########*****************#####################**++++++++++###*++++++++++++++++++++++++++++++++++++++#%*++*%@%#***##**%*+++++++++#%*+==-------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++=------------------------===+++++++**::-+++++++++++++++++++++++*######***+++++++++++++++++++++++++++++++++++++++****####%@@@%#***++++++*##*+++++++++++++++++++++++++++++++++++++*##*++*%##%#**#%%#+++++++*#*+++==--===-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++
==+++++++==----------------==++++++++++++#-:-++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%##*++++++*##*++++++++++++++++++++++++++++++++++++*##***#%**#%#*#%*++++*##++++======--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++=-----------==++++++++++++++#*:=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###*+++++*##*++++++++++++++++++++++++++++++++++++*%#*+*%#**#%#*##**#%*+++++======-==++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++=--------=+++++++++++++++++#==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+++*##*+++++++++++++++++++++++++++++++++++*##***#%#+**%##%@#+++++++========++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++=---==++++++++++++++++++**=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++*##*+++++++++++++++++++++++++++++++++++*%#***##**+*%%#%#*+++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++=+++++++++++++++++++++%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++*##*+++++++++++++++++++++++++++++++++**##****##***@%@%%#++*+======+++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++
+++++++++++++++++++++++++++++++++++++++%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*##***+*##*++++++++++++++++++++++++++++++++*+#%****#%*#%**%%%%**+=====+++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+***++*##***+*%#***++++++++++++++++++++++++++++**+#%#****%%#**+*%@@#+====++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++
++++++++++++++++++++++++++++++++++++++##++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++******%#****#%#***+++++++++++++++++++++++++++*++*%#****%%***++*@@#===++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++
++++++++++++++++++++++++++++++++++++++##++++++++++++++++++++++++++++++++++*%**++++++++++*+++++++++++++++++++++++++++++++++++++++++++++**++***+***********#%*****#%***+++++++++++++++++++++++++++++**%#*****%#*+++#@@%++*++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++
++++++++++++++++++++++++++++++++++++++%*+*+++++++++++++++++++++++++++++++++*%#****++**+++*+++++++++++++++++++++++++++++++++++++*****+********#*************#%*****##*******+++++++++++++++++++**++*+*%#*****##***%#*%@***+++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++
+++++++++++++++++++++++++++++++++++++*%*+*+++***+*+++++++++++++++++**++++****##*************+******+++++*++++**+***+*******+************#%#####%************%@#****#%********++*+**++++++++++++++++++*%******#%#%#***%%**++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++
+++++++++++++++++++++++++++++++++++++*%***+*****+##*****++++++++++*+****+*****#%#****************************************************###******#%********##%#**#%*****%**********+*****++++++*****++***#%******#%******%%******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++
+++++++++++++++++++++++++++++++++++++*%*+*+*******%**************+*+++**********%@###****#######***********************************#%#*******#%#***#####***+*++*#%****%%***************+++*************#@#*****#%******%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++
+++++++++++++++++++++++++++++++++++++*#***********%**************+*+*************%#**######*****#############*********************@%***####%@@@@@%##**+++*****+++*%#***#@%*****#******************++****%@%*****##******%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++
+++++++++++++++++++++++++++++++++++++*#***********%#******************************##*******#%%%###***********#######%%%%%%%%%%%%%@%%%%%%%@@@%##*+******++***+++****%#****@@#****%#**********************#%#%#***##************+++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++
+++++++++++++++++++++++++++++++++++++*************#%***#**********************#%***%%*******++***#############************######%@%%#####@@*******+++**++*++++**+*+*#%****%%%#***#%**********************%#*%#**##*************++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++
+++++++++++++++++++++++++++++++++++++*#************%#**##**********************%%***#%*************+**********#############*****%%****#%#*******+*++*+++*++++**+******%#***%#%@%**#%#********************#%**#%*##************+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++
+++++++++++++++++++++++++++++++++++++*#************%%***%#**********************%#***#%*****************************************%###%##***********++*++****++**********%@%#*@@@@@%**%#********************%#**#%@#**********+++***++++++++++++*++*++++++++++++++++++++++++++++++++++***+***********+++++++++
+++++++++++++++++++++++++++++++++++++*%**#**********%#**#%***********************%#***#%*+****+*********************************@#**************+++++++****+***********%@@%@@@@@@#%%*#%*******************#%***%@#**********++*********++++*++**+***+++++++++****+++*+++++++++++++++++*+*******+++*+++++*+++
+++++++++++++++++++*+++++++++++++++++*%**%**********#%***%#**********************#%****#%************+*********++++++***********%*********++****+++++++***+++********%%#*@@@%%@@%**#%##%*******************%****%************+*********+****************++**+*++***++*++*++++++*++**++++******++**++++*++++*
+++++++++++++++++++++++++++++++++++++*%**%#*****#%***%#***%***********************%#*****%***********+*****++++*+++++**************************************+*******#%#*#@@@@%%@@*****#%%%#*****************%#************************+*****+**+***********++***+*******+****+******+*******+*++****+++*++++*
++++++++++++++++++++++++*+++++++++++++%**#%******%%**#%***#%***********************%#*****%*********+***+***************************************++++++**********#%#*#%@@@@@@@@#%%******#@@%****************%#*****************************************************+************************************++++*
++++++++++++++++++++++++++**++++++++++%#**%#******%#**%%***##***********************%*****#%************************************+******+********++*****+******#%#*#@@@@@@@@%#%#*%#*******#@%***************%#*******************************************************************+***************************
+++++++++++++++++++++++++++++*++++++++#%**#%*******%#**@****%#**********************#%*****#%*****************+****************++***++********++****+*******##**#@@@@@@@@%****%#*%*********%%***************************************************************************************************************
+++++++++++++++++++++++++++++++*++++++*%***%#*******%#*#%****%#**********************%#*****#%*************************************************++*************#@@@@@@@@#******#%##%*********#%**************************************************************************************************************
+++++++++++++++++++++++++++++++++**++++#%**#%********%#*%%****%#**********************%******%#*****************************************************************#@@@%**********#%#%#*********#%*************************************************************************************************************
++++++++++++++++++++++++++++++++++***++*%#**%#********%#*%#****%#*********************#%******%#********************************************************************************#%%%**********#%************************************************************************************************************
++++++++++++++++++++++++++++++++++++***+#%**#%*********@#*%#***#%**********************%%******%*********************************************************************************%%@***********%#***********************************************************************************************************
+++++++++++++++++++++++++++++++++++++****%#**%#*********%#*%#***#%**********************%#*****#%*********************************************************************************@@%***********%***********************************************************************************************************
+++++++++++++++++++++++++++++++++++++++**%@#*#%**********%##%#***#%*********************#%******%%********************************************************************************#@@***********#%**********************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++*@%**%#**********%%#%%***#%*********************#%******%%*********####*******************************************************************%@************@#*********************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++*%%*#%***********#%##%#**#%*********************%#*****#@#*##%%%%@***********************************************************************#@#***********##*********************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++*#%#%#***********#%%#@#**#%#********************%#*****#@@#****#%************************************************************************%%**********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++***+#@%%*************%%#%#**#%#*******************#%*****%@#*****%#************************************************************************%%**********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++*****#@@#*************#%%%%#**#%*******************%%***#@%%****#%*************************************************************************************************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++*****@@***************#%%%%**#%#*****************#@#**%#*%#**%%**************************************************************************************************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++*******@#*##*************%%%@#**%#*****************#%**%#*%%#%#***************************************************************************************************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++*******%#*#%#************#%%%%#*%%#****************%%*%%*%@%#****************************************************************************************************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++*++*******#%**#%%*************#%%%%##%%***************#%##%%#@#*****************************************************************************************************************************************************************************************************
+++++++++*+++++++++++++++++++++++++++++************#%#**@@#**************%%@%##%%**************#%****%%************************##**####***********************************************#*********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++**************#%#**@@@#**************%@@@##%#*************%%***#%***********************%#**@@@@@@**********************************************@*********************************************************************************************************************
++++++++++*+++++**++++++***+*+**++++****+************#%#*#@%%%#**************#@@@##%#***********#@#**#%*********************#%#**@@@@@@%****************#**#%%#***##*****************%%*********************************************************************************************************************
++++++**+++++*++********++*+***+*****+****************#%#*#@#*#%#***************#@@%%%#**********%%**#%********************#%#*#@@@@@@@*****************%#**************************%%**********************************************************************************************************************
+++******+++************++******************************%%**%%#*#%%#***************#%%%%%#********%#**%*******************%%*#@@@@@@@%******************#%##**#%******************#%#***********************************************************************************************************************
*********************************************************#%#*#%%#**#%##***************#%@@@%#*********%********************#@@@@@@@@#**********************####****************#%%#*************************************************************************************************************************
***********************************************************#%#*#%%#***#%%#****************#%@@%#******%******************#@@@@@@@@%******************************************#%#****************************************************************************************************************************
*************************************************************#%%#*##%####%%%##***************##%%%%###@#****************@@@@@@@@@#******************************************%#******************************************************************************************************************************
****************************************************************#%%#*####%%%@@%%#******************##%%%%%%#************#%@@@@%#******************************************#%#*******************************************************************************************************************************
*******************************************************************##%%####*****#*******###****************###%##*********%@%********************************************%%*********************************************************************************************************************************
************************************************************************###%%%%#####*****##%%#*****************#%%%#***************************************************#%#**********************************************************************************************************************************
*********************************************************************************######%%%%#%%%%%#****************#%%%**************************************************************************************************************************************************************************************
********************************************************************************************###%@@@@#*************#%%#%%#***********************************************************************************************************************************************************************************
**************************************************************************************************##%@%##***********#%%##%##********************************************************************************************************************************************************************************
*******************************************************************************************************#%%%#**********#%#*#%%%#*************************************************#*******************************************************#*******************************************************************
***********************************************************************************************************%%#*********#%%#**#%%%#******************************************************************************************************#*******************************************************************
*************************************************************************************************************#%#*********%@@%####%%%%##****************************************#********************************************************#***************************************#***************************
***************************************************************************************************************#%#********#@@%%%##*#%@@%%###**********************************#*************************************************************************************************#***************************
*****************************************************************************************************************#%#**######%%##%%%###%%%###%%%%#####*****************#########*************************************************************************************************#***************************
*******************************************************************************************************************%%#*%%####%%####%%%###%%####*###%%@@%%%%%%%@@@@%%%%%%###**#*************************************************************************************************#****************************
********************************************************************************************************************#%##%%#*##%%######%%%##%%%######*#%%#*****###%%#********##*************************************************************************************************#****************************
**********************************************************************************************************************%%#@%####@%###*#####%%%%%@%%###**%%##*******#%%#******#***********************************************************#**************************************#****************************