;;;;;;;;;;;;;;;;;;;;;;;/:::::::::::::::::::::/;;;;;;;;;;-─-/ \;;;;;;;;;;;;;;;;;;;;;;;;ヽ:::::::::::::::::::::|,、 ヽ,;;;;;;
;;;;;;;;;;;;;;;;;;;;;/:::::::::::::::::::::::/;;;;-'"三ソ''~ \;;;;;;;;;;;;;;;;;;;;;;;i::::::::::::::::::::i ヽ i;;;;;
;;;;;;;;;;;;;;;;;;/::::::::::::::::::::::/;;/─‐'"~ \;;;;;;;;;;;;;;;;;;〉:::::::::::::::::/ヘ ゙i;;
;;;;;;;;;;;;;;;/::::::::::::::::::::::/;/ ヽ;;;;;;;;;;;;;;/::::::::::::::::::ト、\ ヽ
;;;;;;;;;;;;;/::::::::::::::::::::::// ,,;'' ,,;-、|;;;;;;;;;;;;/::::::::::::::::::/,, |
;;;;;;;;;;;/:::::::::::::::::::::// // /;;;;;;;;;;|;;;;;;;;;;/:::::::::::::::::/ ノ , /
;;;;;;;;;/::::::::::::::::::::// //" /;;;;;イ''~|||;;;;;;;/:::::::::::::://l .ノ /
;;;;;;;/:::::::::::::::::::// 、,, /" /;;;;-'" |:::::||;;;;;;/:::::::::::/ レ'''" /;;;;;;
;;;;;/::::::::::::::::::// ゙丶、. / /;;;-'" ,,-、 |::::||l;;;;/:::::::/ l /ヽ/ノ
;;;/::::::::::::::::::/{、''''''‐-、, ゙ヽ, /;/ .i' o=-‐'|;;;/:::::/ ┬-''、 /;;;
;;/:::::::::::::::::/;;;\ヽ┬-、゙'ヽ、 | lヽ,//ヽ、,,-‐''~,-‐'''''|;;/:/ //ノ;; l ト, ヽ/;;;;
/::::::::::::::::/;;;;;;;;;;;\ \\゙'ヽ、l ヽ"゙'" ゙-'",-''"~ |/ //" l |ヽ /;;;;;;
:::::::::::::::::{;;;;;;;;;;;;;;;;;\ \\( ol|" "-'" " | ヽ /;;;;;;;;;;
::::::::::::::::::|;;;;;;;;;;;;;;;;;;;;;\ ゙‐‐'''"~/ /゙''ヽ .| /;;;;;;;;;;;;;;
i,::::::::::::::::|;;;;/|;;;;;;;;;;;;;;ヽ'"~ / _ /ヽ、 \ ノ /;;;;;;;;;;;;;;;;
;゙i:::::::::::::::|/ |;;;;;;;;;;;;;;;;;;゙、. / // / /-゙i,. ヽ /./;;;;;;;;;;;;;;;;/::
;;;;i,::::::::::::| |;;;;;;;;;;;;;;;;;;;;;;ヽ ヽ、-'"'''"‐''",,-''",/ ゙i, //;;;;;;;;;;;;;;;;/::::
;;;;゙i,:::::::::::| |;;;;;;;;;;;;;;;;;;;;;;;;;\ ヽ\'` _/~" ,ハ / /;;;;;;;;;;;;;;;;;|:::::
;;;;;;゙i,:::::::::|''" |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙ヽ、 \'{,,,-‐'"__ノ / i;;;;;;;;;;;;;;;;;;;|:::::
;;;;;;;;;゙、::::::| |;;;;;;;;;;;;;;;;;;;;;;;∧;;;;;;;;;;;;゙ヽ、 ヽ-‐'"~ ,,, /ヽ、i';;;;;;;;;;;;;;;;;;;|::::::
;;;;;;;;;;;゙、:::::| |;;;;;;;;;;;;;;;;;;;;;;/::::|;;;;;;;;;;;;;;;;;;冫、 '''""~''' / ヽY;;;;;;;;;;;;;;;;;;|::::::
;;;;;;;;;;;;;゙、:::|'"|;;;;;;;;;;;;;;;;;;;/::::::::|;;;;;;;;;;;;;;/ ゙ヽ /|;;;;;;;;;;;;;;;;;;;|:::::::
;;;;;;;;;;;;;;;;;;;;;;;/:::::::::::::::::::::/;;;;;;;;;;-─-/ \;;;;;;;;;;;;;;;;;;;;;;;;ヽ:::::::::::::::::::::|,、 ヽ,;;;;;;
;;;;;;;;;;;;;;;;;;;;;/:::::::::::::::::::::::/;;;;-'"三ソ''~ \;;;;;;;;;;;;;;;;;;;;;;;i::::::::::::::::::::i ヽ i;;;;;
;;;;;;;;;;;;;;;;;;/::::::::::::::::::::::/;;/─‐'"~ \;;;;;;;;;;;;;;;;;;〉:::::::::::::::::/ヘ ゙i;;
;;;;;;;;;;;;;;;/::::::::::::::::::::::/;/ ヽ;;;;;;;;;;;;;;/::::::::::::::::::ト、\ ヽ
;;;;;;;;;;;;;/::::::::::::::::::::::// ,,;'' ,,;-、|;;;;;;;;;;;;/::::::::::::::::::/,, |
;;;;;;;;;;;/:::::::::::::::::::::// // /;;;;;;;;;;|;;;;;;;;;;/:::::::::::::::::/ ノ , /
;;;;;;;;;/::::::::::::::::::::// //" /;;;;;イ''~|||;;;;;;;/:::::::::::::://l .ノ /
;;;;;;;/:::::::::::::::::::// 、,, /" /;;;;-'" |:::::||;;;;;;/:::::::::::/ レ'''" /;;;;;;
;;;;;/::::::::::::::::::// ゙丶、. / /;;;-'" ,,-、 |::::||l;;;;/:::::::/ l /ヽ/ノ
;;;/::::::::::::::::::/{、''''''‐-、, ゙ヽ, /;/ .i' o=-‐'|;;;/:::::/ ┬-''、 /;;;
;;/:::::::::::::::::/;;;\ヽ┬-、゙'ヽ、 | lヽ,//ヽ、,,-‐''~,-‐'''''|;;/:/ //ノ;; l ト, ヽ/;;;;
/::::::::::::::::/;;;;;;;;;;;\ \\゙'ヽ、l ヽ"゙'" ゙-'",-''"~ |/ //" l |ヽ /;;;;;;
:::::::::::::::::{;;;;;;;;;;;;;;;;;\ \\( ol|" "-'" " | ヽ /;;;;;;;;;;
::::::::::::::::::|;;;;;;;;;;;;;;;;;;;;;\ ゙‐‐'''"~/ /゙''ヽ .| /;;;;;;;;;;;;;;
i,::::::::::::::::|;;;;/|;;;;;;;;;;;;;;ヽ'"~ / _ /ヽ、 \ ノ /;;;;;;;;;;;;;;;;
;゙i:::::::::::::::|/ |;;;;;;;;;;;;;;;;;;゙、. / // / /-゙i,. ヽ /./;;;;;;;;;;;;;;;;/::
;;;;i,::::::::::::| |;;;;;;;;;;;;;;;;;;;;;;ヽ ヽ、-'"'''"‐''",,-''",/ ゙i, //;;;;;;;;;;;;;;;;/::::
;;;;゙i,:::::::::::| |;;;;;;;;;;;;;;;;;;;;;;;;;\ ヽ\'` _/~" ,ハ / /;;;;;;;;;;;;;;;;;|:::::
;;;;;;゙i,:::::::::|''" |;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙ヽ、 \'{,,,-‐'"__ノ / i;;;;;;;;;;;;;;;;;;;|:::::
;;;;;;;;;゙、::::::| |;;;;;;;;;;;;;;;;;;;;;;;∧;;;;;;;;;;;;゙ヽ、 ヽ-‐'"~ ,,, /ヽ、i';;;;;;;;;;;;;;;;;;;|::::::
;;;;;;;;;;;゙、:::::| |;;;;;;;;;;;;;;;;;;;;;;/::::|;;;;;;;;;;;;;;;;;;冫、 '''""~''' / ヽY;;;;;;;;;;;;;;;;;;|::::::
;;;;;;;;;;;;;゙、:::|'"|;;;;;;;;;;;;;;;;;;;/::::::::|;;;;;;;;;;;;;;/ ゙ヽ /|;;;;;;;;;;;;;;;;;;;|:::::::