::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::'''''''':::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::''``` ``''::::::::::::::::::::::::::
::::::::::::::::::::::::' `':::::::::::::::::::::::
::::::::::::::::::::::' `:::::::::::::::::::::
::::::::::::::::::::' `:::::::::::::::::::
:::::::::::::::::::' `::::::::::::::::::
::::::::::::::::::: `:::::::::::::::::
::::::::::::::::::: ,cc$h. :::::::::::::::::
::::::::::''`:::::: z$$$$$$$ .::`::::'`':::::::
:::::'``:',c :::'`: ccc, ,d$$$$$$$$ `' z :: d$ :::::::
::::: $ : $$ :: ,c $$$$$$<Cc$$$$$$$$$$$ : <$r`: $P ::' ::
:'::: $ ' ?$ :',$F $$$$$$$$$$$$$$$$$$$$ ::'$F : $F :',$'.:
,c :: $ `.'$ : d$ : ,$?$$$$$$$$$$$$$$$$?? :: $F > $ .: $" ::
`$c : `h ` $ ' $F : j "?$$$$$$$$$P"" \ :: $h' z$ ' d" :'
`$h.' ?hc,$hcc$F :: j `"$""" d :: $$cc$$,,d" ' z$
:. "$$cd$$$$$$$$F :: ?. ,$. ..r .: z$$$$$$$$$,.,d$"
:::. "$$$$$$$$??" :: . $".c. ,`$$ cr $> $F -?? : """??$$$$$$$P",;
::::: ?$$$$C''zC>c,' .,. $."===" ,$$.`"??" z$ ,ccc, c$$$$c, c$$$$" :::
::::::<$$$$$,d$$$$$$$$$$ .,,$$cr ,c$$$$$h. <$$$$hcd `???$$$$$$$$$,$$$$$ .:::
:::::. $$$$$$$$$$$$$ .,cd$$$P" z$$$$$$$$$c "?$$$$$cccc `$$$$$$$$$$$$$F ::::
:::::: `??$$$$$$$$$" ,$$?$$$",c, ?$$$$$$$P =c,"$$$$$?$$ `????$$$$$" ..:::::
::::::::: $$$$" .,;, " z$F zP" ?$$$$$$$' "',"$$$.`? .::., `$$$?? `:::::
::::::'. """" `::::. ,$$",d" ?$$??" ", "$$c :::::' .,;. ` ::::
::::::.C' ,CC; :::: ,$$'," ","$$c ::::: <CCC, \ :::
::::: <C ,CCC> .:::: $$';' ".`$$r`::::: `CCCC, ` `::
:::: '> <CCC :::: <$P P ) ?$$ `::::: `<<' .. `
:::' .. `'' ::::: $$F; `.<$$r`::::: .;;CC `<C
::' <C' ;C;. `:::: $$$. .,cd ;, ,;;> ==$$ccccz'd$$F :::::: <CCCC d. <C
:: ,C ,f CCC> .:::: ?$$$cc$$$$$cc !!! !!!! <C$$$$$$$c$$$ :::::: CCCC <$ C
:: C' P ,CCC' :::::. ?$$$$$$$$$$F !!!!!!!! <$$$$$$$$$$$' :::::::. <CCC, F ,C
: <C ,CCC> :::::::. ?$$$$$$$$$$. `''''' z$$$$$$$$$$P'.::::::::: `CCC>. ,CC
: CC,,;CCCC .::::::::: "$$$$$$$$$$hccccc$$$$$?$$$$P" .:::::::::::: )CCCCCCCC
<CCCCCCCC( :::::::::::. "?$$$ ?$$$$$$$$$$$$F $$$" .::::::::'``::: `<<CCCCCC
<CCCCCC>' ```:' ```::::..`"$c "???$$$???"",d$$' :::::::'' x `' `CCCCC
,CCCCC> .;; .; , ``::::. ?$$cccccccccc$$$$F :::::'' " "x -<;. `CCCC
;CCCC' ,;CCCC ;C / , ``::: $$$$$$$$$$$$$$$$ `'' .n " . " <CC>;. `CCC
<CCC ,<CCCCCC, `'- .; <. `?$$$$$$$$$??$$F ,; r )n= .,;CCCCCCCC>CCC
`<CCCCCCCCCCCCCCCC;,. `' ,C' .; `$$$$$$$$$ d$" ,CC h. .,<CCCCCCCCCCCCCCCC
:. `'<<CCCCCCCCCCCCCCC;, <CC>.`$$h`$$$F,$' ;CCC. ' ,;CCCCCCCCCCCCCCCCC>'
:::::.. `''<CCCCCCCCCCCCC CCC>CC,`?? `?" ?',CCCCCC ;CCCCCCCCCCCCCCC>''' ..
::::::::::... `<CCCCCCCCC ., CC, -cccc- ,CC>' .,,CCCCCCCCCCC>>' ...:::::
:::::::::::::::.. `<<CCCCCC> ,<CCC>. ??" ;CCC, `CCCCCCCCC>' ..::::::::::
::::::::::::::::::.. `CCCC -CCCCCCCr ;CCCCC>>- `CCCCCC' ..::::::::::::::
::::::::::::::::::::: ;CCCC,. ``<C>' .;C>>'' .,;CCCCCCC :::::::::::::::::
::::::::::::::::::::' CCCCCCCCCC;,. ;C' ..----''''''''CC :::::::::::::::::
:::::::::::::::::::: ;'''''''''''C' C' .,;C;<C;;. `C, `::::::::::::::::
:::::::::::::::::::' / CCCCCCC; C . .;C <CCCCCCCCC, C> ::::::::::::::::
::::::::::::::::::: < `<C>'`<C> C CCCCCC `<<C''<C>' `C> `:::::::::::::::
::::::::::::::::::',C ; ' . C CCCCCC ;;,. .;. CC, :::::::::::::::
:::::::::::::::::: <' CC,' ,;C ;C `CC CCC;,.,CCCC> `CC `::::::::::::::
::::::::::::::::: ,C <CCCC;CCCC <C . <CC `CCCCCCCCCCCC, <C> ::::::::::::::
::::::::::::::::' C CCCCCCCCCC <C <CCCCCC -CCCCCCCCCCCC> `CC `:::::::::::::
:::::::::::::::: C `''''''''' <C <CCCCCC `''''''''''' CC, :::::::::::::
::::::::::::::: <CCC>;<CCCCCCCC;<C C>`<<CCC;C;C>;<CCCCCCCCCCCC `::::::::::::