::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::''``````':::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::'             `::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::'                `:::::::::::::::::::::::
:::::::::::::::::::::::::::::::'                   `::::::::::::::::::::::
:::::::::::::::::::::::::::::'                      ::::::::::::::::::::::
:::::::::::::::::::::::::'''                        ::::::::::::::::::::::
:::::::::::::::::::::''                           .:::::::::::::::::::::::
:::::::::::::::::''               ,ccd$$$$F $$$ '  ``'::::::::::::::::::::
:::::::::::::::'               ,c$$$$$$P"  ,$$$$cccr :::::::::::::::::::::
:::::::::::::'                ,$$$$$$" ,cdP""??$P".,..`:::::::::::::::::::
::::::::::::'                 d$$$$$$  $P zd$cc  .cF"" `::::::::::::::::::
:::::::::::                   $$$$$$$hc$ d$P"""" ?$P"". ::::::::::::::::::
:::::::::::                   ?$$$$$$$$$ ".,cP""'dc,. "  `::::::::::::::::
::::::::::                     ?$$$$$$$F  $$$L   d$$$$$hcc,._``'':::::::::
::::::::::                      ?$$$$$$,$c "??? z$$$$$$$$$$$$$>=  ::::::::
::::::::::                       "$$$$$$$$$$$cc$$$$$$$$$P""" ..:::::::::::
::::::::::                  .,.   `$$$$$$$??"_,$$$$$$$$$ <h ::::::::::::::
::::::::::                c$$$$.   `$$$$" ,c$$$$$$$$$$$$L`$ `:::::::::::::
::::::::::              ,$$$$$$L    `$" ;n "$$$$$$$$$$$$$r`h :::::::::::::
:::::::::'             ,$$$$$$$F  .,d".>4MMx "?$$$$$$$$P" d$ `::::::::::::
:::::::::              $$$$$$$$Lzd$$$,$>`MMM.q,_"""""" ,c$$$> ::::::::::::
::::::::'              $$$$$$$$$$$$$$$$$ MMM>'MMM''P"".?$$$$$ ::::::::::::
.`'::::'               ?$$$$$$P""$$$$$$$ PP"" ",,n 4MP .. ?$$r ''`````''::
:.  `''                 "????" c$$$$$$$$> nMMx`MMM-' z$$$>'?".zcd$$$$$c,`:
:::.                 .z$$ccc$'<$$$$$$$$$$ 4MMM PP ,c$$$$$hcc$$$$$$$$$$$$c
:::::.             . d$$$$$$$ <$$$$$$$$$$h.'".,zc$$$$$$$$$$$$$$$$$$$$$$$$h
::::::::...  ....::: $$$$$$$$>`$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$F
::::::::::::::::::: d$$$$$$$$h ?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'
::::''````'::::::: ,$$$$$$$$$$c "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'
:'`,cd$$$hc ``::: z$$$$$$$$$$$$$.`?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$P' :
,c$$$$$$$$$$h. ,;,""$$$$$$$$$$$$$$c,"?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$P",cc,
$$$$$$$$$$$$$$c `!! `$$$$$$$$$$$$$$$$c,"??$$$$$$$$$$$$$$$$$$$$$$$P" ,d$$$$
$$$$$$$$$$$$$$$$ !!! `$$$$$$$$$$$$???$$$c=  ""?$$$$$$$$$$$$$$P"".zc$$$$$$$
$$$$$$$$$$$$$$$$c`!!! ?$$$$$$$$$$$$c,.,,cccd$$c;,,._`"""_.,,;c$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$.`!!! ?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$h !!!, $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$r`!!!;`$$$$$$$$$$$$$$$$$$$$$$$$$$$$c?$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$ <!!! ?$$$$$$$$$$$$$$$$$$$$$$$$$$$$;$$$$$$$$$$$$$$$$$$$