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