:::::::: /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\:::::::::::::::::::::::::::::::::::::::::::/
::::: /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: \:::::::::::::::\ ̄ ̄ ̄
::::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\:::::::::::::::\ /:::
:::::::::::::::::::::::::::::::::::|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\:::::::::::::::\_______/:::/
:::::::::::::::::::::::::::::::::::|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\::::::::::::::::::::::::::::::::::::::::::::::::::::: /
:::::::::::::::::::::::::::::::::::|\:::::::::::::::::::::::::::::::::::::::::::|::::::::::::::::::::::::::::::::::::::::::::::\:::::::::::::::::_____/ /
:::::::::::::::::::::::::::::::::::| \ ::::::::::::::::::::::::::::::::::::|::::::::::::::::::::::::::::::::::::::::::::::::: |::::::::::::::\______/::::::
:::::::::::::::::::::::::::::::::::|===ミx::::::::::::::::::::::::::::::::::|ヽ::::::::::::::::::::::::::::::::::::::::::::: |__________:::::::::::::
:::::::::::::::::::::::::::::::::::| '.:::j:::.} \::::::::::::::::::::::::::::|´}::::::::::::::::::::::::::::::::::::::::::/::::::::::::::::::::::::::::::::::::::::::::::: \ ::::
:::::::::::::::::::::::::::::::::::|乂__ノ ) ::::::::::::::::::::: |リ\:::::::::::::::::::::::::::::::/::::::::::::::::_______::::: \
::::::::::::::::::::\:::::::: |` ……'/⌒|::::::::::::::::::: |、__ノ|::::::::::::::::::::::::/ :::::::::::: /::::::::::::::::::::::::::::::::::::::::\:::::
::::::::::::::::::::::::::\:::::\ \::::::::::::::::| |:::: __/:::::::::::::::/_____......_::::::::::::\
::::::::::::::::::::::::::::::::\:::::\ \::::::::::::\ |::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\ ::::::::::
:::::::::::::::::::::::::::::::::::::: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\::::::
::::::::::::::::::::::::::\:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ :::::::::::::::::\
:::::::::::::::::::::::::::::: \::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/:::::::::::}::\:::::::\ :::::::::::::::::
:::::::::::::::::::::::\:::::::::\__________:::::::::::::::::< ̄ ̄ ̄ ̄:::::::::::::::/::::::::}:::\:::: ̄ ̄\::
::::::::::::::::::::::::::: \:::::::::\__:::::::::::::::\:::::::::::::::::\:::::::::::::::::\______/::::::/::::::::::\:::::::::::: `
::::::::::::::::::::::::::\:::\::::::::::::::::::::/⌒}---\:::::::\:::::\:::::::::::::::::::::::::::::::::::::::::::::::/::::::::::::::::::::: ̄ ̄ ̄
::::::::::::::::::::::::::::::(\:::\ ̄ ̄ノ}⌒ヽ}-----\:::::::\:::::: ̄ ̄ ̄ ̄ ̄\::::::( ̄::::::::: /} :::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::\: ̄ ̄ ̄ ̄ }-------\:::::::\:::::::::::::::::::::::::::::::::\::\_/:/:::::::::::::::::::::::::::::
;;;;;;;;;;;:::::::::;:::::.....::;;;:::;;;;;::::;:;:::::.....:::....:::::::::::::::::::::::::..::::::::.........::::::........::::::::::::::..............::::::::::::;;;;;;;;;;::::::::::::::::::::::::::::::::::...::::....:;;;;;;;::::::::::::::::::::::::::::::::::::
:::....::;;;;;;;;;;;:::::::;;;;;;;;::::::::;;;;;;;;;;;;;::::::::.....::::::;;::;;;::::::::::::::::::::::::::.........:::::::::::::...................:::::::::::::::;;;;;;;;;;;;;;;:::::;;;;;;;;::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;:::::::::::::::::;;;;;;;;:::
:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::;;;;;;;;;;;;:::::::::::::::::::;;;;;;;:....:::::....:::::........::::.......................,,,,,,;;;,,,,,,,:::::::::::::::;;;;;;;;;;;;;;;;;,,,;;;;;;;::::::::::::::::::::::::::::;;;;;;;;;;:::::::::::::::::;;;;;;;;;;;;;;::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,::;;;;;::::::;;;;;::::::::::_=二ニ=_ :::::::..........................;;;;;;;;;;;;;;;;,,,,,:::::::::::::::::::::;;;;;::::::::::;;;:::::::,,,,;;;;;;;;;;:::::::;;;;;....::::::::::::::;;;;;;;;;;;;;;;;;;:::::
::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;_=二ニ三三三三三ニニニ三三三二==_.;;;;;;;;:::::::;;;::::::::::::::::.;;;;:::::::::::::::::;;;;;;;;;;;;;;;;;:::::;;;;;;:::::::::::;;;;;;;;;;;;;;;;;;;;;;;::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ̄=二三三三二 ̄  ̄二三三二=三_ :::::::::;;;;;;;;;;;;,,,,,,:: ┏━ ━┓ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 三三三二─ - 나이트헤드... - ─二三三三:::::::,,,,,,,,,,,,;;;;;;;;;;;;; ‡__ | -- 、 ;;;;;;:::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ─_三三二 ̄ _二三三_─ ;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,: ┃_| /r'' ヽ.ヽ -- 、
;;;;;;;;;;;;;;;:::;;;;;;;;;;;:::::;;;;;;;;:::::::::  ̄==二三三三ニニニ三三三三三二= ̄ ...........:::::::::;;;;;;;;::::::::::::::;;;;;;;;;;;;;;;;;; ┏┓ | ( / / /r'' ヽ.ヽ -- 、 ;
;;;;;;;;;;;;;;;;:::::;;;;.........:;;;;;;;;;;;::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;::  ̄=ニ二= ̄ :......:;;;;;..............::::;;;;;;;;;;;;;;;;;;::::::;;;:..........;;;;; † / \ ∠ノ | ( / / /r'' ヽ.ヽ -- 、
::::::;;;;;;;;;:::::::::::::::::::;;;::::::;;;;;:::::::::::::;;:::;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......;;;;:::::::::::::::::::::;;;;;:::::;;;;;::::::;;;:......┏━ ━━i rイ \ ∠ノ ( / / /r'' ヽ.ヽ
::::::::;;;;;;;:::::::::::::::,,,:::::::::::::::;;;::::::::::::;;;;;;;;;;;;;::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::;;;:::::::::;;;:::::;;;;;;;;;;;;;;;;;;;;;............;;;;;;;;;;::::::::::::::::::::::: ト、 j ヘ ´ rイ \ ∠ノ | ( / /
;;;;;;;;;;;;;;;;;;;;;.........;;;;;;;;,,,,,,,;;;;;::::::::::;;;;;;;;;;;;;;:::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::;;;;::::;;;;;;;;;;;;;;;;;;;:::::::;;;:::::::::;;;;;;;;;;;;;,,,,,,,,,,,,,,,: レ ― イ ト、 j ヘ rイ \ ∠ノ
::::::::;;;;;;;;;;;;;;;::::::::::::;;;;;;;;:::::::::::::::::;;;;;;;;;:::::::::;;;:::::::::;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::レ ― イ ト、 j ヘ ´ rイ
::::::::::............;;;:::;;;::::::::;;;;;;;;::::::::::;;;;;;;;;;::::::::::::;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::;;;;;::::::::;;;;;;;;:::::::::::;;;;;;;;;;;;;::::;;;;;;;::::::::::::::::::::::::::;;;;;;;,,,,,,,,;;;;;;;;; レ ― イ ト、 j ヘ
:::::::::...............;;;;;;;;;............;;;;,,,,,,,;;;;;;;;;;;;;;,,,::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::,,,,,:;;;;;;;::::;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::,,,,,,,;;;;;;;;;;;;;;;;;;;;;;; :レ ― イ
:::::::::................;;;......................;;;;;;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::;;;;;;;;:::::::::::::::::;;;;;::::::::::::::::::::::::::::::::::,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::............;;;...............,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........;;;;;;;;;;;;;;;::::::::::::::::::::::;;;;;;;;;;;;;;::::::::::::::::::::::;;;;,,,,:::::::::::;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;:::::::::;;;;;;:::::::;;;;;;;;;
:::::::::::::::;;:::::;;;;;,,,,,,,,,,,,,;;;;;;;;;;;;;;:::::;;;;;;;;;;;;;;;;;;::::::::::::;;;;:::::::;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;:::::::::::::::::::::::::;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::;;;;;;;;;;;;;;;;;
::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;::::::::::::::;;;;;;;;;;;.......:::::::::::;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;:::::::;;;;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;;;;:::::::
:::::::::::::;;;;;;;;;;;;;;;;;;:::;;;;;;;;;:::::;;;;;;;;;;;;;;;;::::;;;;;;;;;;;;;;;,,,,,,::::;;;........;;;;;:::::::::::::::::;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::;;;;;;;;;;;;;;;;;;:::::::;;;;;;;;;;;;;;;;::;;;;;;;;;;;
,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,:::::::::,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........:::::::::::::::::::::;;;;;;;:::::::::::::::::::::.........::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;::::::::;;;;;;;;;;;;;::::::::;;;;;;;;;
;;;;;;;;;;;;;;:::;;;;;;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........:::::::::::::::;;;;;;;;;;;;;:::::::::::::::..................::::;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;.........;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;::::::::::::;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::........::::::::::::::::::;;;;;;;;;;;;;;:::;;;;;................:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;:::::;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::;;;:::::::::::::.......:::::::::::::::::::;;;;;;;;;;;;;;;;;:::::::::::.......::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::;;;;;;;;..........;;;;;