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