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