::::::::::::::::::::::::::::::::::::::dSs. ::::::::::::::::::::::::::
:::::::::::::::::: :::::::::: dP:*?jSs.::::::::::::::::::::
::::::::::::::: ,sSSs.:::::: j:::.. *?jSs. ::::::::::::::
:::::::::::::::. ?b::.. .dP :::::: dP::.. . . *?jSs. :::::::::
::::::::::::::::. ?b:. ,.dP ::::::: l::. . . .. . ?jb. :::::::
::::::::::::: ?b: P?P :::::::: ?b:::... ?b :::::
::::::: .,sjSP b. :::::: :::.. .,,:::... ... dP :::::
::::::: :?:::::... . ?j. ::.::. jP?js:.. . .. .dP .::::::
:::::::. :b::::... . . . ?j. ?b:. dP ::..jP::... .dP .::::::::
::::::::. :b::.. . . jP?b. ? :::.?b :::: dP::.. d .:::::::::::
:::::::::. :b:sP?b d..?b. ?b ?b:..?b.jP::... . dP .:::::::::::::
::::::::::. ? . dP:jP ::. ?b ?b ?b::. ?d:::.. jP .::::::::::::::
::::::::::::..:: dP: d ::: ?b ?b ?b::.. j:::... . d :::::::::::::::
:::::::::::::: ,dP: d .db.::.: ?. s:::d::.. jP ::::::::::::::::
:::::::::::: ,dP:: dPdP::?b.: . : :. ?jP::... ..::::::::::::::::
:::::::: .dP:: ,PdP:.. .?b ?: :? ::::. dl::... jP :::::::::::::::::
::::: .jP::.,dP :.. : :l ::::: l:. . dl :::::::::::::::::
:::::. :b::::. db : :.. :: dP :l ::::: ?b::.. : :::::::::::::::::
:::::: :::. ?jb.::.. :.dP jP ::::: ::... l :::::::::::::::::
::::::. :b::.. . ?:.. bdP d ::::: ::... :b :::::::::::::::::
::::::: ::ss. . ::. P jP ::::::: ?b::.. ?b ::::::::::::::::
:::::::. :bP?jb:.... . . dL :::::::.:::... ?b :::::::::::::::
::::::::. .::::.. :::. jP?b. :: ?b:... ?b :::::::::::::
:::::::::::::: j::.. . . dP .?js,?b::.. b.::::::::::::
:::::::::::.sSSP:: . ,dP::... . *?jb:... ?b ::::::::::
:::::::::::: ?b::::.. . . .dP?js:::.. .. . . . b.:::::::::
::::::::::::. ?b:::.. ,sjP .:. *j.::.. . . ?b :::::::
:::::::::::::. ?b:sSjP*..:::::::::. ?7:::... . . .dP ,:::::::
::::::::::::::. ?* ....:::::::::::::: .d::::. . . .dP .:::::::::
:::::::::::::::. ..::::::::::::::::::::: d7:::. . . .dP .:::::::::::
::::::::::::::::::::::::::::::::::::::: dP:sjjs,:dP .:::::::::::::
:::::::::::::::::::::::::::::::::::::: j* ...... *P :::::::::::::::