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