Code:
dddddddddhhhhhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssooooooooossssssssssssoooooooosssssssssssssssssssssssssssssyyyyyyyyyyyyhhhhhdddddddddddddddddddddddddddddddddmmmmmmmmmmmmmmmmmmmmmmmmmmmm
ddddddddhhhhhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyssssooooooooooooooooooooooooooooooooooosssssssssssssssssssssssssssssyyyyyyyyyyyhhhhdddddddddddddddddddddddddddddddddmmmmmmmmmmmmmmmmmmmmmmmmmmm
ddddddhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyssssssssssoo+++++++++++/+++++++++++++++++++++oooooooooooooososssssssssssssssssyyyyyyyyyhhhhhhddddddddddddddddddddddddddddddmmmmmmmmmmmmmmmmmmmmmmmmmmm
dddddhhhhhhhhyyyyyyyyyyyyyyyyyyyyysssssssssssssssssssssssooo+++/////:::::::////////////////////+++oooooooooooooooooooooossssssssssssyyyyyhhhhhhhhdddddddddddddddddddddddddddddmmmmmdmmmmmmmmmmmmmmmmmddd
dddddhhhhhhhyyyyyyyyyyyyyyyyyyyyyssssssssssssssssssoooooo+++///:::::-------------::::::::::::::///+++++++ooooooooooooooooossssssssssssyyyyyhhhhhhhdhddddddddhhdhhhdddddddddddddmmmddddmmddmmmmmddddddddd
hhhhhhhhhhyyyyyyyyyssssssssssssssssssssssssssooooooo++//////:::--....`````````````````.....---::::////+++++++oooooooooooooooossssssssssyyyyyhhhhhhhhhdhdhhhhhhhhhhhhhhhhhhddddddmddddddddddddddddddddddd
hhhhhhhhhyyyyyyyyssssssssssssssssssssoooooooooo++++///:::::-..````````````````````````````````..--::://///++++++oooooooooooooossssssssssyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddddddddddddddddddddddddd
hhhhhhhhhhyyyyyyysssssssssssssssssssoooooooo+++///::::--..```````.................````````````````..-:::://///++++++++o+oooooooooosssssssyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddddddddddddddddddddddddd
hhhhhyyyyyyyyyyyssssssooooooooooooooooo+++++///:::--..`````....------------------......```````````````.-::::////+++++++++oooooooooooosssssyyyyyyyhhhhhhhhhhyyhhyyhhhhhhhhhhhddddddddddddddddddddddddddhh
hhhhhyyyyyyyyysssssssoooooooooooooooo++++///:::--.``````..------::::::::::::::::::----.....``````````````.-:::////+++++++++oooooooooooossssyyyyyyyhhhhyhyyyyyyyyyyyyhyyyyhhhddddddddddddddddddddddddhhhh
hhhyyyyyyyyyyyssssssoooooooooooooooo+++//:::--..`````..----::::::////////////////////::---.....````````````.-::://///++++++++ooooooooooosssssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhdddddddddddddddddhhddhhhhhh
yyyyyyyyyyyysssssssooooooo+++++++++++///::--.`````...--:::::////++++ooooooooooooooo++++/::---......``````````.--:://///+++++++ooooooooooossssssyyyyyyyyyyyyssyyyyyyyyyyyyyhhhhddhhhddddddddhhhhhhhhhhhhh
yyyyyyyyyyssssssssooooooo+++++++++////::--.`````...--:::////++ooosssyyyyyyyyyyyyysssssooo+/::--.......``````````.-:://////++++++oooooooooossssssyyyyyyyyyyysssssssyyyyssyyhhhhhhhhhhhhhhhhhhhhhhhhhhhyyy
yyyyyyyysssssssssooooooo+++++++////:::--.````....--::///+++oossyyyhhhhhhhhhhhhhhhhyyyyyssso+//:---.......`````````.::://///+++++o+++ooooooosssssssyyyyysssssssssssssssssyyyhhhhhhhhhhhhhhhhhhhhhhhyyyyyy
sssyyssssssssssssooooooo+++++////:::--.````...---:://+++ossyyhhhdddddddddddddddhhhhhhhyyyyyso+//::---......`````````-::://///++++++++++oooooossssssysssssssssssssssssssssyyyhhhhhhhhhhhhhhhhhhhyyyyyyyys
sssssssssssssoooooooooo+++++///:::--..````...---://++oosyyhhddddddddddddddddddddddhhhhhhhyyyyso+//:----......````````.::::////++++++++++ooooossssssssssssssoooooosssssssssyyyhhhyhhhhhhhhhhyyyyyyyyyysss
sssssssssssssooooooooo+++++///::---.````...---::/++ossyhhddddmmmmmmmmddddddddddddddhhhhhhhyyyyyso+/::----......```````.-:::////+++++++++++oooooossssssssoooooooooooooooossyyyyyyyyhhhhhhyyyyyyyyysssssss
sooooosoooooooooooooo+++++///::--..```....---:/++osyyhhdddmmmmmmmmmmmddddddddddddddhhhhhhhhyyyyysso+/::---.......```````-::::///+++++++++++oooooossssssooooooooooooooooosssyyyyyyyyhyyyyyyyyyyyyysssssoo
oooooooooooooooooo+++++++///::--..```....---:/+ossyhdddmmmmmmmmmmmmmmmdddddddddddddhhhhhhhhyyyyyyyso+//:----......```````-::::///+++++++++++oooooosssoooooo++o+++oooooooossyyyyyyyyyyyyyyyyyyyssssssoooo
oooooooooooooooooo++++++///::--..```....---:/+osyhhddmmmmmmmmmmmmmmmmmdddddddddddddddhhhhhhhyyyyyyyso++/::---.......``````-:::://///++++++++++ooooosoooooo++++++++++o+ooossssyysyyyyyyyyyyysssssssoooooo
oooooo+++ooo+++++++++++///::--..```....---:/+syyhddmmmmmmmmmmmmmmmmmmmmdddddddddddddhhhhhhhhyyyyyyyysso+/::---.......``````--:::////////++++++++ooooooooo++++++++++++++ooossssssyyyyyyyyssssssssoooooooo
oooo+++++++++++++++++////::---.```....---:/+syhhddmmmmmNNmmmmmmmmmmmmmmmddddddddddddhhhhhhhhhyyyyyyyyyso+//::---......``````--::://////////++++++ooooooo++++++++++++++++ooossssssyyyyyyssssssssoooooo+++
ooo++++++++++++++++++///::---..```....--:/+syhhddmmmmmNNNmmmmmmmmmmmmmmmmddddddddddddhhhhhhhhyyyyyyyyyyso+//::--........`````-:::///////////+++++oooooo++++/+++/++++++++ooosssssssyssssssssssooooooo++++
oooo+++++++++++++++////::---..```....--::+syhhdmmmmmmmNNNNmmmmmmmmmmmmmmmdddddddddddddhhhhhhhyyyyyyyyyyyso++/::---.......````.-:::://////////+++++ooo++++++//////+++++++oooooossssssssssssooooooooo+++++
oooo+++++++///////////::---...```....-::/syhhddmmmmmmmmNNNNmmmmmmmmmmmmmmmddddddddddddhhhhhhhhyyyyyyyyyyssoo+/::---........```.-::::://///////+++++oo+++++////////+++++++oooooosssssssssoooooooooo++++++
oooo+++++++//////////:::--...```....--:/oyyhddmmmmmmmmmNNNNmmmmmmmmmmmmmmmmdddddddddddhhhhhhhhyyyyyyyyyysssso+//:---........```--::::::////////++++++++++//////////+++++++ooooossssssssoooooooooo+++++++
ooooo+++++//////////:::---...```....-:/+syhdddmmmmmmmmmmNNNNNmmmmmmmmmmmmmmmddddddddddhhhhhhhyyyyyyyyyysssssso+//:--.........``.-::::::::///////+++++++++//////////+/++++++ooooossssssooooooooooo+++++++
ooooo+++++////////::::---....```...--:/oyhhdddmmmmmmmmmmNNNNmmmmmmmmmmmmmmmmmdddddddddhhhhhhhhyyyyyyyyssssssssoo+/:--........```.-::::::::://////++++++++////////////+++++++oooosssssoooooooo+ooo+++++++
oooooo+++++//////::::---....````...-:/+syhhdddmmmmmmmmmmmNNmmmmmmmmmmmmmmmmmmdddddddddhhhhhhhyyyyyyyyssssssssssoo+/:--........``.--::::::::://///+++++++//////////////+++++++oooooooooooooooooooo+++++++
ooooooo++++//////:::---.....````...-:/+syhddddmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmdddddddddhhhhhhhyyyyyyyysssssssssssoo//:--........``.--::::::::://///++++++//////////////++++++++oooooooooooooooooooo++++++
++oooooo++++/////:::---.....```...--:/oyyhhddddddmmmmmmmmmmmmmmmmmmmmmmmmmdddddddddddhhhhhhhyyyyyyyysssssssssssooo+//:--........`.----:::::::://///+++++/////////////+++++++++ooooooooooooooooooooo+++++
++++ooooo++++////:::--......```...--:/oyyhhddddddddmmmmmmmmmmmmmmmmmmmdddddddddddddhhhhhhhyyyyyyyyyssssssssssssooo++/::--.......`.-----:::::::////////+//////////////+++++++++ooooooooooooooooooooooo+++
++++++oooo++++///::---......```...-:/+oyyhhhdddddddddddmmmmmmmmmmddddddddddddddddhhhhhhhyyyyyyyyyssssssssssssooooo++//::--......``.------::::::///////////:://///////++++++++++ooooooooooooooooooooooo++
o+++++++ooo++++///::--......```...-:/+oyyhhhhddddddddddddddddddddddddddddddddhhhhhhhhhyyyyyyyssssssssssoooooooooo++///::---......`.---------::::://///////:://///////++++++++++ooooooooooooooooooooooo++
oo++++++++++++++//::--......```...-:/+osyyhhhhhhhhhhhhdddddddddddddddhhhhhhhhhhhhhyyyyyyyyyssssssssoooooooooooo+++///::--........``.---------:::::///////::::///////+++++///++++ooooooooooooosooooooooo+
ooo+++++++++++++//::---.....```...-:/+osyyyyhhhhhhhhhhhhhhhdhdddhhhhhhhhhhhyyyyyyyyyyyyyyssssssssooooooooooo++++++///::--..`````````---------:::::://////::::///////++++/////++++ooooooooooosssssoooooo+
oooo+++++++++++++//::--.....```...-:/+ossyyyyyyyyyyyyhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyysssssssoooooooooo++++++++/////::-..`````````.---------:::::://///:::::://///+++//////+++++ooooooooosssssssooooo+
+ooo++++++++++++++//:--.....```...-:/+ossssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssssooooooo+++++++++///////::::-..`````````..-------::::::://:::::::://///++///////++++oooooooosssssssssoooo+
++++++++++++++++++//::--....```...-:/+oossssssssyyssssssssssssssssssssysyyyyyyyyyysssssssssssooooooo+++++++++++/////:::::::--..````````..-------:::::::::::::::://///+////////+++++ooooooosssssssssoooo+
+++++++++++++++++////:---...```...-:/+ooosssssssssssssssssssssssssssssssssssssssssssssssssssssoooo+++++///::::--------....--.......``````..-------::::::::::::::///////////////++++oooooossssssssssooo++
++++++++++++////////:::---...`...--:/++oooooooooooooooooooooooooooooo++++++oooosssssssssssooo++++///::::--.....-////:-....`....``````.`````..------:::::::--:::::///////////////++++ooooossssssssssooo++
++++++//+++/////////:::----..`...---:::/+++oooooooo++++++++++++////::::::://++o+++++++++++////:::::::::----...-:oyyys/.--.`.::--......`.......------::::-----::::///////:::://///+++ooooossssssssssoooo+
///++/////////////:::::-----.`........-:/++++++++/////::::----........--:::////////++++++++///////:::::::----.-:+yyys+.--.``-:::-----.........--------::-----::::://///:::::::///++++oooosssssssssoooooo
////////////////::::::------.`````....-://///::---.....``````...----:::/+++++ooooo+ooo+++++++++/////::::::------/syyso.--..``-::----...........----------------:::////:::::::::///+++oooossssssssooooooo
/////////////::::::---------.`````....-----...``````````.....--:///////+ooooosssssooooooo++++++++////::::::::::-:syyyo.---.```.-..................-------------:::://::::::::::///+++ooooooosssssoooo+oo
////////////::::::--------.```````......````````````....--------:://///+oosssssssssssoooooo+++++++////:::::::::::oyyys..---````.....................------------::::::::::::::::///+++ooooooosssoooo++oo
//:://::::::::::---------.``````````````.````````.................:////++osssssyyyyysssoooooo++++++/////::::::::/oyyys..---.````......................----------:::::::------::::///++++ooooooooooo+++oo
:::::::::::::::-------..``````````..--:/+-``````................--:+++//+oosssssyyyyyyssooooo+++++++//////:::::::+yyys-.----.````..........````........-..-.-----:::::--------:::///+++++++oooooo+++++++
::::::::::::::-----....```````.-:/+oosssys-````.-----------:::::/++////++++oossssyyyyyyyssooooo+++++++//////:::::/yhys-.----..```.........`` ``............-----::::----------:::////++++++oooo++++++++
//::::::::::::------...```.-:/+ossssssyyyys:```.:::::://++oossyyys+/::://++osssyyyyyyyyyyyssoooo++++++++///////::/yhyy:------..```.:/::-..```````............-----:::-----------::://////+++ooo+++++++++
//::::::::::::------....../oossssssssyyyyyys-``.-://++oooosssoo++/:::///+++oossssyyyyyyyyyyysoooo+++++++++////////shyy:-------..```.:/-.``````.``............-------------------:::///////++++++++++++++
://:::::::::::-------......-:///++++ooossyyyo......--/o+oo++///::::///+++oossssyyssyyyyyyyyyyssoooo+++++++++//////shhy:--------..```.-.````.....``............------------..-----::::::///++++++++//////
:::::::::::::::----------..-----..---.---://+-...`.:--/++///::://////++++ooossssyyyssyyyyyyyyyyssoooo++++++++/////ohhy/--:------...`````........``.............---------.....----:::::::://++++/////////
/::::::::::::::----------------------------.....```...://////////++++++oooooosssyyyyyssyyyyyyyyyysooooo++++++++///oyhy+-:::------.````.---.......``.............------.......-----::::::://++///////////
///:::::::::::::::--------------------------....`````.-:////+++++++oooooosssssssyyyyyyysyyyyyyyyyyssoooo+++++++///+yhy+-::::---.```.-:/:--.......```.............----........---------::://///////::::::
//////::///:::::::::------------------------.....````.-:::///++ooo+o+/++oyyyysssyyyyyyyyyyyyyyyyyyyysoooo+++++++//+shyo-::::-.```.-////:--........```........................----------::///////::::::::
/////////:///::::::::::----------------------........---::::://::::+/+sydmmmmdhhyyyysssyyyyyyyyyyyyyyssoooo++++++/+shys::::-.```.:++++/::--........```........................----------:://///:::::::::
///////////:///::::::::::--------------------.....+:````--.-::/-////oshddmmmmmmmmmdhyssssyyyyyyyyyyyyyssoooo+++++//oyys/::.````-/+o+++//:---.......``````.....................----------::////:::::--:::
/////////////////:::::::::--------------------..../+.`````.-:/o+o/-/syhhddddmmmmmmmmmhssssyyyyyyyyyyyyyysoooo++++//oyys/:.```.:+oooo+++/::---......```````````................----------::::::::::------
///////////////:///:::::::::-------------------...-o+/--...-/ooo/-/oyyhhdddddmmmmmmmmNhsssyyyyyyyyyyyyyyssooo+++++/+yys/.```.:+ooooo++++/:::---.....```````````````..........------..---:::::::---------
//////////////////:::::::::::------------------...-/oo/+:...-/+/.:osyhhddddddddddddmmNmyoosyyyyyyyyyyyyyyssooo++++++yyo-....:+ooooooo++++//:::----...`......````````````.....----....---::::::----------
///////////////////:::::::::::--------------.......:oo//o:......:+ssyhhhhhhdddddddmmmmyyooosyyyyyyyyyyyyssssooo++++oys::///+ooooooooooo++++///::::--...........``````````````....```...--:::------------
/////////////////////::::::::::--------..........-.-/o+/oo:...`.+osyhhhhyyhhhhhddmmmdo+ysssssyyyyyyyyyyysssssoo++++o+:+oooooooossssssoooo+++++////:::---............`````````````` ````....-----..---
//////////////////////::::::::-------...........-/:.:oo/+s+-.``:osyyhhhyyyyhhhhdmmmh+/oysssssyyyyyyyyyyysssssooo+++//oooossssssssssssssssooooo+++////::---.............```````````````````````````.....-
://////////////////::::::::::--------........-:/+o+-./o+/oo:.`./+oyyhhhyyyhhhddmmmy//osyyysssyyyyyssyyyysssssoooo+/+oooossssssssssssssssssssssooo++++//:--..............``````..````````````````````````
::::////////////////::::::::--------.....--:/+++ooo/--+o//oo:`.//osyyhhhhhhhddmdhho/+osyyyyssyyyyssssssssssssoooo++ooosssssssssssyyyyyyyyyyyyysssooo++/::-----------.....``.........````````````````````
:::::////////////://:::::::--------....-:////++++oo+:.:oo/+s+.`:+osyyyhhhhhddhyo+sy++sysyyyssyyyysssssssssssssoooooosssssssssyyyyyyyyyyyyyyyyyyyysso++//::::-----------....-----.....```````````````````
::::::///////////:::::::::-------...-:://////+++++oo/-./oo:oo:`.:/oossyyyyys+/+osysossssyyyyyyyyssssssssssssssssooossyyyyyyyyyyyyyyyyyhhhhhhhhhyyssoo++///::::::::::--...-::::----.....`````````````````
:::::::://////////:::::::------..--:////////+++++++++:.-os+:o/-`..-:/+++//:/+osyysosssssyyyyyyyysssssssssssssssoossyyyyyyyyyyyyyhhhhhhhhhhhhhhhyyyssoo++////////:::-...-::::::::---...............``.```
:::::::::://///////:::::-----..-:////////+++++++++++++-.:oo:/:....``..---/+osssooosssssyyyyyyyysssssssssssssssoossyyyyyyyyyyhhhhhhhhhhhddddddhhhyyyssoo+++////////:-.-:///////::::---...................
:::::::::::://////:::::-----.-/++///////++++++++++++++/../so:-.`.--...-////++++oossssyyyyyyyysssssssssssssssssossyyyyyyyhhhhhhhhhhdddddddddddhhhhyyyssooo++++++++/:--/////////////::--..................
:::::::::::::::::::::::---..-++++//////+++++++ooooo++++:.-os/...`.-----:///++oossssyyyyyssssssssssssssssssyysossyyyyhhhhhhhhhhhdddddddddmddddhhhhyyyyssssoooooooo+::/+++////////////::-.................
:::::::::::::::::::::::----..:+++++////+++++oooooooo+++/--+so:......-:::://+oossssssssssssssssssssssssssyhyssssyyyhhhhhhhhhhdddddddddmmmdddddhhhhhyyyysssssssssso+/++++++/////////////:--...............
:::::::::::::::::::::::-----..:+o+++++++++++ooooooooo+++/--sso:::.`..-:://++oooosssssssssysssssssssssssyyyssssyyyhhhhhhhhhdddddddmmmmmmddddddhhhhhyyyyyysssssssooooo+++++++////////////:---.............
::::::::::::::::::::::::----...:+oo++++++++++ooooooooo+++:./ss+://-``.-::////+++oosssssssssssssssssssyyyyssssyyhhhhhhhhhdddddddmmmmmmmddddddhhhhhhyyyyyyyysssssooooooo+++++++///////////:---............
::::::::::::::::::::::::-----...:+ooo+++++++++oooooooo+++/--oys+:+/-``.:::////++ooosssssssssssssssssyysyysssyyhhhhhhhhhddddddmmmmmmdddddddddhhhhhhyyyyyyyyyssssosoooooo+++++++////////////:----.........
::::::::::::::::::::::::------...-/+oo++++++++++oooooooo++/.:sys//+/.`.-::////++ooosssssssssssssssyyssyysosyyyhhhhhhhddddddmmmmmmmmddddddddhhhhhhhyyyyyyyyyyssssssooooooo++++++++//////////::----.......
::::::::::::::::::::::::-------....-:+++o+++++++++ooooooo++:-+yys//+:.`.-:///+++ooooossssssssssyysssssysosyyyhhhhhhhhdddddmmmmmmmmddddddddhhhhhhhhyyyyyyyyyyssssssooooooooo++++++++///////////::-----...
::::::::::::::::::::::::------........-:/+o++++++++oooooooo+//ooo+++++:..-://++++oooosssssssyysssssssssosyyyhhhhhhhdddddmmmmmmmmdddddddddhhhhhhhhyyyyyyyyyyssssssoooooooooo++++++++++/////////////::::--
:::::::::::::::::::::::------......````..-:/++/+++++++oooooo+++++++++oo+:``.-://++++++ssssssooooosssooosyyhhhhhhhhddddmmmmmmmmmdddddddddhhhhhhhhhyyyyyyyyyysssssssooooooooooo++++++++///////////////////
::::::::::::::::::::::------.....````````...-/+///+++++oooooooooooooooooo` ````..----://++++ooooossooosyyyhhhhhhddddmmmmmmdddddddddddddhhhhhhhhyyyyyyyyyyssssssssssoooooooooo+++++++++//////////////////
------::::::::::::::::-----.....`````........./+/////++++ooooooooooooosss: `.---:::://+++ooooooosyhhhhhhhhdddmmmmmmmddddddddddhhhhhhhhhhhyyyyyyyyysssssssssssooooooooooo++++++++++++///////////////
---------------------------...`````...`````...-++/////+++ooooooooossssssyo` `.--:::///++++++oooosyhhhhhhddddmmmmmmdddddddddddhhhhhhhhhhhhyyyyyyyyyssssssssssoooooooooo++++++++++++++///////////////
-------------------------....```..-.``````....-/++////++++ooooooooosssssyy- `.-::////+++++oossyhhhhhhddddmmmmmmddddddddddhhhhhhhhhhhhhyyyyyyyysssssssssssooooooooooo+++++++++++++////////////////
-----------------------.....```.-..`````..--.../+o++//++++++ooooooooosssyy+``` `.-://+++oossyyhhhhhddddmmmmmddddddddhhhhhhhhhhhhhhhhyyyyyyyysssssssssssooooooooooo++++++++++++//////////////////
-----.-----------------.....``..``````..--:/:..-/++o++//++++++ooooooooossys-`` ``./osssyyhhhhdddddmmmmmdddddhdhhhhhhhhhhhhhhhhyyyyyyyyyssssssssssoooooooooo++++++++++++++///////////////////
--...........----------......```````..-::::++/:--:/+o++///++++++++oooooooss:``` `:+sssyyhhhhdddddmmmmddddddhhhhhhhhhhhhhhhhhhyyyyyyyyssssssssssoooooooooo+++++++++++++++////////////////////
..................-...........`````.--::::/+oo+/-.-/++++//////+++++++++ooos+.`` `:+osssyyhhhhdddddmmmdddddddhhhhhhhhhhhhhhhhhhyyyyyyyysssssssssoooooooooo++++++++++++++++/////////////////////
............................-.```..---::://oooo+-..-:+++++////////+++++++oos-`` .:+osssyyhhhhhdddddmmdddddddhhhhhhhhhhhhhhhhhyyyyyyyyyysssssssssooooooooooo+++++++++++++++//////////////////////
..............................```.----:::/+ossoo:-...:/++++/////////++++++oo/``` ./+oossyyhhhhhdddddmmddddddhhhhhhhhhhhhhhhyyyyyyyyyyyyyyysssssssooooooooooo+++++++++++++++++//////////////////////
.............................```..----:::/+sssss+-....-++++++++////////+++++o/-` `-/ooossyhhhhdddddddddddddhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyssssssssoooooooooo++++++++++++++++++++/////////////////////
............................````..----:::/+ssssso:-----:/+++++++++////////+++++/-.-/ooossyhhhhdddddmmddhhhhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyysssssssssssoooooooo++++++++++++++++++++++//////////////////////
............................````..----::://osyyys/::::///++ooooooooo+/////////++++ooossyhhhddddmmddhhhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyysssssssssoooooooooo++++++++++++++++++++++++++///////////////////
............................````..-----:://osyyyy+:://///+++ooooosssso+/:::::/++ooosyhhhddddmmddhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssssoooooooooo+++++++++++++++++++++++++++++/////////////////
...........................``````.----::://+ssyyyo//+++/++++ooossssssso+/:-:/+ooosyhhddddmmddhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssssssoooooooooo+++++++++++++++++++++++++++++++/////////////////
...........................``````..---::://+ssyyys++++++++oooosssyssyyys+/+ooooshhddddddddhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyssssssssssssoooooooooo++++++++++++++++++++++++++++++++++//++////////////
..........................```````..---::://+ssyyyyoo+++++ooooosssyyyyyysoooooyhddddhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssssssssssoooooooo++++++++++++++++++++++++++++++++++++++++//++++++++///
..........................```````..---::://+ssyyyyooooo++oooosssssssysoooosydddhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyssssssssssssssssooooooooooo++++++++++++++++++++++++++++++/++++//++++++/++++++++//
.........................````````..---:::///ossyyyoooooo++oooosssssoooooyhdddhyyyyyyyyysyyysssssssssyyyyyyyysyyyyyyyyysssssssssssssssooooooooooo+++++++++++++++++++++++++++++++++++++++/++++++++++++++//
.........................`````````.--::::///ossyyysoooooo+oossssssooosyddhyyyyyysysssssssssssssssssssssssssssssssyssssssssssssssssoooooooooooo+++++++++++++++++++++++++++++////+++++++++++++++++++++++++
.........................`````````.--:::////+syyyysssoooooossssssssssyyssysssssssssssssssssssssssssssssssssssssssssssssssssssssoooooooooooo+++++++++++++++++++++++++++//////////////++++++++++++++++++++
--........................````````.-::::///++syyyhysssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssoooooooooooooo+++++++++++++++++++++/+++////////////////////+++++++++++++++++