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