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