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