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