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