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