.:::::::::::::::::::::.
.:::::::::::::::::::::::.
.:::::::::::::::::::::::::.
.:::::::::::::::::::::::::::.
.:::::::::$2,db,$1::::::::::::::::.
.::::::::$2,d%%%%b,$1::$2,db,$1:::::::::.
.:::::::$2,%%%%P'%%%b,d%%%b,$1::::::::.
.::::::$2,%%%%P,$1:::$2`%%%b'^q%%b,$1:::::::.
'::::$2,%%%%P,d|$1:::::$2`%%%b:'^%%b,$1:::::'
'::$2`%%%'$1:$2'q$|$1:::::::$2'q%%b'`q%%b'$1::'
':::::::::::::::::::::::::::::::'
':::::::::::::::::::::::::::::'
':::::::::::::::::::::::::::'
':::::::::::::::::::::::::'
':::::::::::::::::::::::'
':::::::::::::::::::::'