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