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