;;-;;-;---;-;;;-;---"-""??O8@@@@@@@@@@@@@@@@@@@@@@@8I"-;:;':'''''';-/+==?/""-"-
''''''''''''''''.;-/*O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8X";'::::::'';"/???/"--;--
'''::''''''':':':;/I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O=-;::':''';;-;---;;;;--
'''''''''''''''''O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#I?''''''';;-";;;;;;;;
''''''''''''''-/N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8O";;;;;;;;;;;;;;;--
:'''''''''''"I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8+";;;;;;;;;-----
'''''''''''"O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O*";;';;;;;-----
''''''''''-O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#O?";;----""""
''''''''-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@S/"-//??/"""
;'''''''$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@S=/????/"--
;'''''-I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NX+???/""--
'''''-X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#X=??//"""
'''''?N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UI??/""""
''''/S@@@@@$*IIO8#ON@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$N@@@@@@@@@@@@@@@@@@@@S?"-----
''''/$@@@@#S*I$$88OON@@@@@@@@@@@@@@@@@@@@@@@@@@@NON@@@@@@@@@@@@@@@@@@@@$="-----
::::/#@@NOZ@@@@@@$N8SOSN#@@@@@@@@@@@@@@@##N@@@@@NN@@@@@@@@@@@@@@@@@@@@@@@**";--
::::"$@@S*#@@@@@@@@@8OOSSN$@@@###@@@@##@$O$NNN@@@@@@@@@@@@@@@@@@@@@@@@@@@@*";--
::::/#@@OS@@@@@@@@@@@@@8OO=IOON$$8N@N$#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@S?'';
::::=@@@8$@@@@@@@@@@@@@@@N$8$S###$8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NI;''
::::O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*;''
:::-N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O-''
::'+@@@@@@#O/=8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8/;'
::'*@@@@@@NO/;-*?O=="OX@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@N+;;
:::S@@@@@@NO"'...::..:::.:.../;==8I$I=/OINO@*X=N8@N@####N#####@@@@@@@@@@@@@@S?"
::"O@@@@@@N*-'..........:....:.:.;'''::'';'"";;-""+/OXNN#N#####@@@@@@@@@@@@@8?-
:-8@@@@@@@8?:;ISI':.....:...............'..'';-"-;""/=O8N@@@@##@@@@@@@@@@@@@X";
:-$@##@@@@S-:'"S$*I;;:'.........:.:...':::';;-';--/?*X$#@@@@@#N@@@@@@@@@@@@@O=-
::O@N$@@@#?..'-"-OO@N$NSS?/......'...::':'':--=IO$@@@@@@@@@#$###@@@@@@@@@@@@@@O
::I@@N@@@$-:;---""==$@@@$8O//;"....''.::'':=**NN@@@@@@@@@@##8N##@@@@@@@@@@@@@@$
::'IN##@@X:.;?+?/++OSN#@@@@@@@S-:..'..-?OSNN@@@@@@@@@@@@@@@@NO$##@@@@@@@@@@@@@N
;'..."S@N?.:;-?SN@@@@@@@@@@SS.... ..:-O@@#@@@@@@@@@@@@@@@@@#NS8#@@@@@@@@@@@@@#*
I@$"..';+#@@O+@@@@@@@S" .... . "8@@@@@@@@@@@@@@@@@@@@@#8S$@@@@@@@@@@@@@$?
:::/S@#@#I..-/=+I$$@@@@@@@@@@$=.....''?ON##@@@@@@@@@@@@@#@@@#8O##@@@@@@@@@@@@@$
-+/ -'?N8; .:;+;::?==XX*+;; .... ..:"$@@@@@@@@@O?I@8ON@@@@#N$OX$@@@@@@@@@@@$-
:;"+="/8X ..''...''";/'""; "O@@@@@@@S*?IOOOON@@@@@#NS*O@@@@@@@@@@#I..
..;;'?I$? ...... ..'; -- .......'/O@@@@@@@?';-"/=**SO$SS8##$OX$@@@@@@@#"::'
..';::?N+ ..... ..'';-; ........::+$@@@@@@@I:'-"/=**SO$SS8##$OX$@@@@@@@#"::'
..'-'+$* . . ..';"-; ...... :/S######@@@='.'-"-"?+IIO8N#8OO8@@@@NN8=;::''
..'-';-*S . . ';-' .... '+8#NN####@@O".:--"/??IIS$N#8OO$@@@@8$O?-'''
..';::-'I?... .....''' .... :?8@##NNNN@@NX-;;;;;-+*OO8NN@@@@@@@N8S+/"-''
.;;:"I;++::: ....'.:: .... :"S@@#N$N#@@#S/;''';"+*S8$N$@@@@@@@@#NO"?/-;
.'; '"-'";''' :...... ...... .-O#@@NN8N@@@8+;;-'/X8888$N$@@@@@@@@#O?;;'''
.'' .:;.';'.'':...... ..... .;XN@@@#N#@@@$I"--"*888$8$N$@@@@@@@@#O-::'::
.:' . ::'':::'...... ... /='. .:=8@####N@@@@@8*?++*XO$N$N$$@@@@@@@@N*: .:..
.::'...;:'':::'...... ... *@@=;'?"S#@@@#N@@@@@@#O*I*S8$NNNNNN@@@@@@@@N?...:::
.. :;'...;-':::.......... . .-/?;*#@@@@@@@@@@@@@@@@N$8#NN@#NNNN@@@@@@@@I..:::::
.. :'-.:+S=':::....... .. . .::':'/@@@@@@@@@@@@@@@@@@$N#N#N#NNN@@@@@@@X; .:::::
:'+';-;'':... .. ..:-=O@@@@@#N#@@@#N$$$$8$8$$$$$ON##O" ......
';'::..... :;: ...:'"/+SO@@@##N#@@NN$$$$888$$N$8S8$N? .. ./X8
'::......': . .::::';--;?XOO*OONNN#@#$$$88888$$N$8"/. .+NN#
;'::......:. :..:::::';;-+XOOOXXS8$N@#N$$8$$$88$$$$O' .*8##8
.. :;'::......:....:. . ... :"IOSOO88N$NNN$$$$$$$N$$$$* :X8NN@@@
..... .';'::::...:..::. . ;'/.. .'*IOSSO$$NNNN#8$$$N$$$$N$$= .. '=$###@@@
... ';':::...:-/X+SO@#@@@##$@@@@@8$88NNNNN#N$$$$$N$$$$8? 'O$O8$$#@@
. :;':::. .'/II*"O"+-?SX@N@@@@@@@#$NN#NN#N$$$$$$$N$88? -SOS8NN@@@
. '::::::'--::''''...:'''/?OO$$@@@@@@@@$$$$$$$$$8$$? "ISOO8#@@@@
. ':::''-;:::;/+X?*/+-??**O8NN#N#@@@@$$$$$$$88NN$? :S88S8N@@@@@
.. ... . ;':::';;;;;-/?IOO#N@@@@@@@@#####@@8$N$N$$$8N##$= +@@#$#@@@@@@
........... ...;-''''''';;"/??+*IX+XX$#@@@@#@##@@@$$NNNN$$N#@@NI. *@@@#@@@@@@@
::::'''::::::::';--;';;;';;;;;;--//??*X8N@@@@@@@@@@@##NNN#@@@@#O; $#S=N@@@@@@@
:::::''''::::::';---;;';'''';':':;;-;"/**O8@N@#@@@@@##NN#@@@@@@8":=#$=;I#@@@@@@
. .. ......... ..;----;'::::::::';;';"/+II=+//O8NNN$@@@@@@@@@$**NSX". .++@@@@@
................';;;"";':::'''';;--;;/??IX**IXON##N##@@@@@@@@#NXI#NS". ./@@@@@
. . ...........'-;---/+""-""/"////?+***XOOSON#N@@@@@@@@@@@@@#N8S@@@? .;8@N#N
.............. ..';;;;;"?++/++I===I=XXOXXXSO$$#NN@@@@@@@@@@@@@##@#@@@8" .:I@$OO
.. '?;''''''+8N8#$#N#N@N#$NN###N#@@@@@@@@@###@@@@@@@@@@@@O=''+XOO
. . . -O/'::':';+S@@@@@@@@@@@@@###@@@@@@@@@@#N#@@@@@@@@@@@@@@#O*-+OX
...?#S".:''';-?/8#8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$IIO
. .. "N@S;.:'';-"=++/*8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OXO
. .....-O@@#8/':'-""";;-"*O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N8$N$
. .. ..."8@@@@O*;;-"?"---?=O#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N$N##
.. . . ....=@@@@@@@@N@N@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@
. .. . ....=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@
""//?/""I$@#+-""//?O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
++??+?/+N@@O/"/????*N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
....:.:::';-O$I-Z/8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
:.::'';;--=O@O";-/O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
++??+?/+N@@O/"/????*N@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@