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