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