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