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