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