--------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++
--------++++++++++++++++++++++++++++++++++++++++++++--++++++++++++++++++++---+++++-+++++++++++++
--------++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++--...--+++++++++++++--++
+++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++---     ..--+++++++++++++++
++--...---++++-++++++++++++++++++++++++++++++++++++++++++++++++++---..  #####  ..-++++++++++++++
-....-----------+-++++++++++++++++++++++++++++++++++++++++++++-----.   #######  ..-+++++++++++++
-..--------.------------+++++++++++++-++++++++-.-+++++++++++------.   ##########  .-++++++++++++
----------..--------.----+++++++++++-+++++++++..------+++++---....   ##XXXXXXXX##  .-+++++++++++
--...----.....-----..--.---++++++++++++++++++----..---+++---....   ###XXXXXXXXXX## .-+++++++++++
-...--.......-++--....-...-.-++++---++++++ ----.##.---++---.. ###XXdddXXXXXXddXXX## .-++++++++++
.......-....-++---....- ....--++-----+++-- -.-.XXX .------..##XdddddddddddddddXXXX#  -++++++++++
...-..-----.++----.--.-......----.. ------#..-.Xdd ...----. #XXXddddddddddddddXXXX## -++++++++++
-.-..-------+---.----.----   ..- .  ......  --. XX#  #.--... ##XXXXdddddddddddXXXX## -++++++++++
+++--+--+++---....-------...    X . .   .   --- #XX   # ...  ####XXXddddddddXdXXXX## -++++++++++
--+++++-+----.....----------.. #X# ##.     #... #XX#####XX#####XXXddddddddXXXXXXX###.+++++++++++
-------+++---.........-------. ###XXX..##       ##XXXdddxxxdddddddddddddddXX###XX## -+++++++++++
-------------.  .  ##### .... XXXdxxX #XX##  #####XXXddxxxxxdddddddddddddXX### #### ++++++++++++
-------------.#XXXdddddddX#XXXddxxxxdXXdXXXX#X###XXdddxxxxxxddddddXXXXXXXX### .. ##.++++++++++++
-------------- XddddddddxxxxxxxxxxxxdddddddxddXX###XddxxxxdddddddXXXX# #X##### .-..+++++++++++++
----.----------.XddddddxxxxxxxxxxxxxddddxxxxxxxddXXdddxxxxdddddddXXX### #######.--++++++++++++++
----...---------.#ddddddxxxxxxxxxxxxddxxxxxxxxxxxxxxxxxdddxddddddXXX# # . ##XX#.--++++++++++++++
----.....------...#dddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddxxdddddddXX#  # #XXXX# -+++++++++++++++
-----.--....-----..#dddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdxddddddddXX## ##XXXX#.-++++++++++++++++
---------...------..XddxxxxxxxxxxxdxxxxxxxxxxxxxxxxxxxxxddddddddddXXX#  ##XXX ++++++++++++++++++
-------------------..XdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddddddddddddXX## #XXXX ++++++++++++++++++
------------..-----...XddddddxxxxxxxxxxxxxxxxxxxxxxxxdddddddddddddXXX####XXXX#-+++++++++++++++++
-------------.-------..#dddddddxxxxxxxxxxxxxxxxxxxxddddddddddddddXXXXXXXX##XX#-+++++++++++++++++
----------------.------.#ddddxxxxxxxxxxxxxxxxxxxxddddddddddddddXXX#XXX##XXX#X#.+++++++++++++++++
------------------.-----.#dddddddxxxxxxxxxxxxxxdddddddddddddddXX####XX#  #XXXX.+++++++++++++++++
---------..-------..-----.#dddddddddxxxxxxxxxxdddddddddddddddXXXX####XXX##XddX.+++++++++++++++++
---------....-----...-----.#ddddddddddxxxxxxddddddddddddddddXXXXXX# .. ##XXX# -+++++++++++++++++
---------.....------..----..XddddddddddxxxxxddddddddddddddXXXXXX###.++++-----+++++++++++++++++++
---------.......----...----- ddddddddddddxxdddddddddddddXXXXX###  .-++++++++++++++++++++++++++++
..---------.....------..---- XddddXXdddddxxddddddddddXXXXX### ..--++++-.  #### .-+++++++++++++++
...-.------......-----...---.XXddXXXXddddddddddddddXXXXXX# .--++++++-. #######X##..+++++++++++++
.....-------.......----...--.XddXdXXXXddddddddddddXXddXXd ---++++++-##### ######### ++++++++++++
.-....------........----...-.XXXXXXXXXXddddddddddXXdXXXdX ----++++- #    ###XXX#X####-++++++++++
-.......-----........----.... ###X#XXXXXddddddddXXXXXXXXX ----++++-#     #XddX#######-++++++++++
.........-----........----...---. ####XXXdddddddXXXX##XX#.----+++-- #####XdX#### ## .+++++++++++
-.........-----.........---..--+++.. ##XXXXdddddX##      -----++++-.##  ### ## ##X#.--.-++++++++
..-........-----.........---..-++++-. ###XXXddddX# --------+-++++++-.  #X # ###Xdd#.. .+++++++++
............-----.........--..--+++++-.  #XXXXXX##-++---+--+++++++++--.#X# # # #  Xd -++++++++++
..............------.......---.-+++++++-. ##XXX##.+++++++++++++++++++++-..  .--+--- XX -++++++++
--............-------.......---.-+++++++-. #### .-++++++++++++++++++++++++--+++---++.#dd -++++++
---.............-------......----++++++++-.....-+++++++++++++++++++++++++++++++-++++++.#dd.-++++
---..-.............-----......----++++++++++++++++++++++++++++++++++++++++++++++++++++++.#xX.-++
---.................-----......---++++++++++++++++++++++++++++++++++++++++++++++++++++++++.#  .-