::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;:;::::::::::
::::::::::::::::::::::::::::;:::;;::::::::::;';'';;;;;';';;;;;;;::::::::::::;;::::::;::::::;:::::::::::;:::::::::::::::::::::::::::::::.:::;:::::::::::::::::::::::::::,::::::::::::::::::::::::::::::::
:::::::::::::::;::::::::::;;;;;;;;:;;;';;';';;;;;;;;;;;;;;;;;;;:::::::::::;;:::::::::::::::::::::::;;;;;;;;;::;;;::::::::::::::::::::::.:::::::::::::::::::::::::::::::,::::::::::::::::::::::::::::::::
::::::::::::::::::::::;';:;;;;;;;;';;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::;';;';;;;;;;;;:;;;;;;;;;:::::::;::::::::`:::::::::::::::::::::::::::::::`:::::::::::::::::::::::::,.:::::
:::::::::::::::::::::'::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::;;::::::::::::::::::::;':::;:::::::::;;;;;;;;;;:::;;;;;:::::::::::::::::::::::::::;;,;';'::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+''++;'++':::: `.`:;;;;''':::::::::::::::::::::..,::::::::::::
:::::::::::::::::::;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;';;;;;;;:;:::::::::::;;::::::::::::::::::::::;:::::;;;;;;;;;::::::::::::+++;++'+++::::####@.:; ;;;:::::::;`::::::::::::  .   ::::::::;
:::::::::;';;;;;';';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;:::;:::::::;;;;;::::;;;::::::::,:::::::;::::::::::;:::::::::::::::::::::::::::+'+'+'';'' #+;``::#;;;:;:;;;:;::;;::`::::  :::::::::::::::::::
::;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;::,:,;;#@#:::::::::,:++::;::::::::;##;;;:::::::::::::::::::;####:::'+++';+++; ##+.`.`@; :.;;'.:,.;;`::`@: .,..+:::::  ,::::::::::
::::::;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;+@+#@@#####@:::::`::::::;'+#@@@##@#+;;;;@';;+'::::+''::;:::::::#;:;;+@+::::;@@#';;:::::;;:::::;;::'++++''++'+'++###@;;;;:;'::::`' ,::@:.,::+::::::  .::::::::::
::::::;;:;;;;;;;;;;;;;;'';;;;;;;;;;;;;;+@'';;;;;';;:;+;:,,:;#@+'::;:::+;;;@@@;;:::;;;;:@@##@##:;;::;:::@:::;;;;;;##;:::::::;;;'+#;::::::;+:::::::::+;' ,:,..,::::;;''''''+'''';'';;+;':::::``::::::::::;
:::::;;;;;#@###@@@##++''';;;';;;;;;;;;@@;;;';;@+#+@+#;'::+#;::::::::;;;;;:;+';;;:;;;;;;:'::+::;;;::;;;@:;;:;;;;:;:'#+'';'###+';':@::::::::#:::::::.;;` :;+::;;#;,``,``.` ':::::::::':::#:., `,,:::::::::
::::;;;;;@;:;:;;;;'+#@@@@'';;;;;;;;;'@';;;;;';';+'@:;:,@:';;;;::::::::;;:;;#;;;;;::::;;:;@@@@@@@@@@@+::;:::::::::;::::::::::;@++@#:::::::::;#+++++++++++##+#':::,::;++++++,:::;+#@@'@#;:'::,:,:;:::+::::
::::';;;#;;;+@@##+';;'';;;;;;;;;;'#@;;@;;;;;;';#+@@@@@@:::::;:;:::::::;;:;;@;;;;  ::::;;;;:`:::;;;::;;;:.:.::.:.::;::::::::@++#:;@'@::::::::;;:.``'+++.,.+,.::@;,::.``::::;@#;+@@##+#@'';::::::::::+::::
::::;;;:@;;@''';::::;;;;',::';;;;'#;;;@;;;;;;';'+.@:`';:::::::;::::::::;:;;';;;;..:::;:#;;'';'';;;::;;;::::::::::;;;;:::::@@::;::':@'+::::::;:,@;;@:;#;;;:;:;:::    ::::+;+@'::::::':::;#:+::::::: :::::
::::;;;;+;@'::';;;'''';,,,:::;;;;;##;;+;;;;;;';';#+;'@::::::::;::::::::;;:;;;;;;;::::;;:';;;;;;;;;;;;;;::::::,,.:::;:::::'++:#::':::;@@;:::::: @,;@,;#::;;;;#+'#;:::##;;'::,``:,`  ':::::''#:::::   ::::
:::;;;;;'+;:+';;:;:,;,,,::::::';;;'';#;;;;;;;';+;.,'';:::::::::':::::::;:::;@';;;:::;;;:+@@@@';;;;'';;;;;;;;;;;;;;;::::::@#::':;@:::::+'#::::::';:+::#,:::@';;;;+@#;@+::::`.,,;########::':+#::::`  ::::
:::';;;;'@;@;'@;;: ,:;:::::::::;;;'#+;;;;;;;:';@;;;;'::::'::;::'::::::;;;;';;;+;;;::;::';;;;::@;;;';;;;;;;;;;;;;;;;::::::'@:;:#;#::::::;@#@@#''''''''#'#@++#@@+;:#':, ::`  :,:@..  :  :::':;;;:+`   `:::
:::';;;''#:@';;@'`;;;;:::::::::;;';+@;;;;;''';;#;;;'@::::'::;;:'::::::;:;;::;;;+;;;::'#;;::::;:+@;;;;;::::::::::: `::::::+@:##::;::::::;;#+#;;;'@:'#@#@@@@@@#+';':    ::####+#@  ..:  ```'::##:#.   `:::
:::';;;';'';;@#;@#++##:;:::::::;;#;;';;;;;';;;';;;':#::::'::;;;':;:::;':;:::::';@'+@;;:;::;;::;::';;;;;::::::,:::,,:;::::+@:#;::;:#::;:;;;@@;##:@'@::#::::::;@;;+: :::::     .@..:::::```': :'':;. .::::
:::';;;+;'@;,+;@;#;;;;@':::::::;;';:@#;;;;;;''@;;;::#::;;::;;;;'::::::;:;:;::;:;;;;;::;;;;'::::;:@::;;;:::::::::::;:;::::'':#:::@:#@@@###:;##;:'##:##@##+``,,:#;@: ::##@     :@,@;;;;; `#;  ;@@:@:.:::::
:::;;;;''#+:.';::;':;;'+':::::::';+`:+;;;;;';@;'''''@::'::;;;;:'::::::;::;::::;:';;;:::;;;:::::;:@:;;;;;;;::::::;@''#;:::+:#'::@::#::;, .:;';''@:+# .,,:@:: ,::@@:  @  ,     ;@#@;;`:;  #'  .;;:':::::::
:::;;;;''@;:.@@@@@@@+;:;:::::::::,';:#+;;;;'@;;;;';::::':;;;;:;;::;:::;:::;;:::;;::;::;;;;::::;;:;;;;;;;;;;;;;;;@;;;;++::@':'';:::#::;:::: ;@+:::+#::  :@:: :: ;@: :@  ,@;###@  @;,.,; ,#'  `;;;:::::;::
:::;;;;;@@'::';:::;:::::::;:::;;':';;#+';;';';;;;';::#:';;;;;:'::::;::;::::::::;;:;:;::;::;:::;:::#+###+;;;;;;;@;;;;;;+::##:+'::::#::';::  ;@#::;:#+++++@ : ::.;@: :@  , #';+   @;   . ,#;.#:;;;:;:::;::
:::';;;;#;+:;';#':;:::::::::::;;;;';;;+#;;;@;;;;;';::':;:;;;;:':;::;::;;;;:;;;;::::::::;:;:';'::;:;::;::'+++++';;;;;;;;::+@:##::::#::::.:  ;@+::+:::::::@@@@@@@@@@@@@###++######@;   .  @;:;::;;:,,;::::
:::;;;;;;@@';,'.;..::::::::::::';;#;;;#''+';;;;;;';:::':';;;''::';:::::;:::;;::::::::::;:::;::::;:;:''';:;;;;;;;;;;;;;:':'@:+:+:::#::;:.   :@+:#::::,`::@,: ,:.;@:::@   : .;  .:@;`  .  #::;`:@#::;;::::
::::;;;;;'#'::::;::;::::::::::::';,#@#'@;;#;;;;;;';;::';:';'::::;:::::::;;;::::::::::::::::;::::::;;;';';;;;;;;;;;;;:::@:;@:':+:::#::;::   :@+@,      ::@.,. ::;@:  # ``:::+      @     @.:::+@#:.,;::::
::::;;;;;;@@:::::::::::::::::::::::,,,#;+';#;;;;;';;:::';:::::;:::::::::::::::::::::::::::;;;::::::;;;;;;;;;;;;;;::::::;::@:'::'::#+++.:   :@@:;;;;   ::@,:::;::;:`.# .:::.+.     @     @:, ,;@+@:,;::::
:::::;;;;:;@::::::::::::::::::::::::::,+@++@#;;;;';;;';@;;:::::::;::::::::;::::::::;::;;:;:;;:::::::::::::::::::::::;::;::@:'::@::#. ;.:::::@#;;;;;   :+;`#,;' @`   #:.::.`+';;;;;@;;;;;@ :`@;@+:;;;::::
::::::::::'@::::::::::::::::::::::::::,+++++##;;;;'';::#::::;;;:;:::::::::;:::::::;;;;:;::;:;:::::::;:::;;;:::;::::::;:+::@:'::@::#. ;:,..`:@+;;;;;   :+,`#..' ``   @`,```.+.`````@`````@.:.;;';;@,;::::
::::::::::;@:::::::::::::::::::::::::::,++++##;;;;;;::;';::;';::::::;:::::;:::;:::;;;:::::;::::::::;::::::::::::::::::::;:@:'::@::#.`;`,`:.:@+;;;;;,  :+:`#.`' `@   #`:```:+.     @     @`::;:';:@:;:.::
::::::::::'@:::::::::::::::::::::::::::;#++++';;;;;:::;+;;:;;;;;::::;::::::'#@+:::::;;'@';:;::;@@###+'''#:::::::::;;::::+:@:'::@::#  ;,;;;;;;;''''';;;:+;`#.`+;;':` # :   :+. ``` @.....@.: @:@+;' ;::::
::::::::::'@:::::::::::::::::::::::::::;;++++#+;;;;;:::';;';;;;;;::::::::@::::::@:;;;+#;:::;::+;::::::::+::::`::::;;::::@:#:;::@::#.:;;: +.:+;:@`.@,::,,@`#,.+:;#:,#@.:::::+,`:::`@ .  : @:`:'@+@: ;::::
::::::::::'@:::::::::::::::::::::::::::;#++++@@;;;;;:::::;;;;;;;;::::;:':::::::::;;;'#':''::::';:::;::::+::::.::::;;::::#:#;'::@::#.:,:: + :@+:@`,@`:,:,@''''+ ;@:  ;;;;;;;+,`::::@ .  :`.@,,'@#: :;::::
::::::::::'@:::::::::::::::::::::::::::'@+++#@@;;;;;;:::#:;;;;;;;;;;::;:::::::::';;;#:';;':;::@;::;:::::+::::,::::;;::::#:+`'::#:,#::';: +::@+:@`.@@@@@@@... + ;@:  :;   `#+, ::: @##### `:, :@#::#:::::
::::::::::;@::::::::::::::::::::::::::::#+++@@@#;;;''::::#;:;;;;;;;;;::#::::::::;;;:;::::'::::;:::::::::+::::`::::;;::::@:+:;::#::#'+#+'':::@@::''@``.   :;::+ ;@:  ;.  :#:+,     @  .:'#########+::::::
::::::::::'@::::::::::::::::::::::::::::;+++#@@'';;;::::::@:;;;;;;;;;;:#:;::::::;:::''@;'':;;::+;:::::;;.,::::::::;:::::@:@@#@@#::#.;;;:,::+@#:,..#`;;.,,,,, + ;@::      ::+,    ,@. .:;,  ` :@+;:::::::
::::::::::'@::::::::::::::::::::::::::::'#+++@@;#;;;:::::::#:;;;;;;;;;:::;:::::;::::##:;'''';;:#':;;;::::::::::::;::::::#:;;;::#::#:;':::::'@##:::#.'':::,:,,+`;@::     :#:+@@@@@+#` .:;,..: :@+::::::::
::::::::::'@:::::::::::::::::::::::::::::@++'##;;'::'+#@#;::+;;;;:++;;;:;::::::;:;:;#+:''''';:::::::::::::::::::;:::::::;::+#':#::'@@@;:::@;@#;#+:::::::@::':,,'@::      ;++::.        '.`:: :@+::::::::
::::::::::'@:::::::::::::::::::::::::::::'@#@@+'''#;;;;;':#:,:;;#'::#;::';:::::;;:::@';#'';:::::+:::::::::::::::;::::::@:;'';:+#:::+++;;;;+';;'@#::::@;:@,:'  `@@::     ;;@'::`        ;:::. :@+::::::::
::::::::::'@::::::::::::::::::::::::::::::';@;##;;'+@@@';';+@@@+;;;;:@+@;;::::::;:::@;;@:`;:::;:@:::::::::::::::;::::::+:+::;::@::: .+::::+;++;@:::::@;:@ `'`:#'@#:   ;`:'#::::, .    :;.`:: :@+::::::::
::::::::::'@:::::::::::::::::::::::::::::::;'@++'#';;;;;+#;';:#;;;;;;:;::;:::::;;:::##';:`::::;:@::::::::::::::;::::::+::@::;::@::: ,+::::#;@#;+`::::@;:@  ;:::;@;@:  ::;#+++++++#'''::;,,:: :@+::::::::
::::::::::+@:::::::::::::::::::::::::::::::::'''@;;;;;;#+;+';;;''#':::;;:;::::::;::::;@'##:;;;;:@::::::::::::::::::::';:@:::;:::::: :+:::::#@#@:,:;+:@;:@`.; @:;@:':   `+#;`   .:+     ;, .: :@+::::::::
::::::::::+@:::::::::::::::::::::::::::::::::::::'@@@@##+;'@#;;;;::::';:::::::::;::::;@':::''';:@:;::::::::::::::::::+'+ :`:;:,:':: ,+::::::@@::.:@#:';:;++++@++++++++++@';#    `+::;':,:,:, :@+::::::::
::::::::::+@::::::::::::::::::::::::::::::::::::::;';;;:;'@;;#;;;'::::#::::::::::::::;';::::::::#:;:::::::::::;::::::@::::::;:::@:: .+::::::@#::::';:@;::  , +:;@:#....:#;;;     + .,,`` ,:: :@+;,.:::::
::::::::::+@::::::::::::::::::::::::::::::::::::::::::::::''#;#;;';;;::'::;;:::::::::@;::;;;:::'+::;;;;;;;;;;;:::::#+@;:::::;:::+::''+:+:;+:@#: ,.';:@;::``,`:#;@:;   ::##+      + ,:,:. ;   :@+::.:::::
::::::::::'@:::::::::::::::::::::::::::::::::::::::::::::::;;#;;;;';;;;+@+:::;;::::::';`  :::::;+:::::::::::::::::@:::::::::::::;::::;:+  ':@#: ::';:@;:::::::+'@#:  `''#;;      +@@@@@@@@@:::@+:+:``:::
::::::::::'@:::::::::::::::::::::::::::::::::::::::::::::::::;@@;;';;;;;;@:::;:::::;;;::`::::'::#::::::::::::::::@:;;:::::::::::;::::;:    :@#::::';:@;::::::'+#@@#+: .:#;;      +   +;+;;;::;@@::#``:::
::::::::::+@::::.       :::::::::::::::::::::::::::::::::::::;+';;;;;;;:+@:;;:;:::::;;:::,::::;:@::::::::::::::::;:;;:::::::::::@::::;:    :@#::,:';:@;: ::: ;';@::;::::#;;;;;.`:+   +,;;:;::+@+#::;::::
::::::::::+@::::::::::::::::::::::::::::::::::::::::::::::::::';';;;;;'.+;+';::;:::::;::::::::':+:::::::::::::::;::::::::::::::@:::::;:    ,@#::,:';:@;:: :: .+;@::'::::#';;;'':,,,''+ #@+;:@:@+;;:#::::
:::::::::;'@;::::::::::::::::::::::::::::::::::::::`   :::::::';;;;;;;''#+';;;;;:::::':;::::::;;::::::::::::::::#:::::::::;;;;'::::::':    :@#:,::+;:@;:::  ,;+;@::'::::#;   .``   :.',,,#;;;:@+:#:':::;
:::::::::;'@;:::::::::::::::::::::::::::::::::::::::::::::::::;'';;;;;;';,:;;:;:::::;#:+#:':::;::+::::::::::::::#::::;::::;;':#::::::':.  `:@#::::+@@@;::,  :@+';';';;;;#;   .``   ;;+''';'++++';@#'::::
:::::::::;'@:;::::::::::::::::::::::::::::::::::::::::::::::::;@#;;';;;';:::::::::::;@@#;:+:::'::@::::::::::::::;:::::::::;;#;;::::::'::::::@#::::+;:@;::,  ;@+;#:,,,,@:#;,,,.``   . ,`:`.,:#:@+.+@'::::
:::::::::;'@::;;;;;;;;;:::::::::::::::,:::::::::::::::::::::::'++;'''';'@;;:::;;::::'#:''@+:,:'::;:;;::::::::::';;:::;;::;;;#;:::::::':::::@@#::::+::@;:::  :@+;@, ```@;#;  . ``   . ,,:`,,:;;@++:@'::::
:::::::::;'@:::@##@##@@+;:::::::::   :@++@::::::::::::::::::::;'#+;;;;;;;;::::::::::;;:#+;:;:;;::::;;':::::::::@;:::::;;:::;;;:::::::'@@@@@@@#,.::+;:@;:: :: ++;@,  ,';;#@@@@@@@@@@@@@@@@@@@:#@+;::'::::
:::::::::;'@::@'+'#:`@ +@++++++;::::;@@;;@#':::::::::::::::::::;#+;;;;;;;#;;::::::::;:@;;+'::;:::::';;:::::::::':::;:;;:::;';:+::::::':::  `@#:,::+;:@;: ::: ,+;@,     .#;::::@.````:.  @  '::@@::.;::::
::::::::::'@+@''''#,`@ +++++++++@@@@+@;` ;#+'::::::::::::::::::;@+#;#@;;;;':::;;::::;:;;''::::::::::::::::::::;:::;;:;;::#:;;:#::::::;:::  `@#,.::+;:@;:::::::+;@,  `';;#;::::@`    :@@@@@@@@@@@@:`;::::
::::::+#'++@''++''#,`@ ++#@@@@@@####++ ;#'@#+':::::::::::::::::;@+''#++;;;+::::;::::;::+'';:;+##++';;'##;:::::@::::::;;;#;;;;;;';::::'` :  `@#::::##';;::::;'++';';;'+''#;,:,  `    :,, @  '::@+::`;::::
:::::;#':;+#'++#@'#,`@ ++'```..  . ``'@   : #+'::::::::::::::::;###+;;#';;;@:::;::::;:::'#+;::;#@@####:::++::;;:;;;;;;#:.';;;;;#:::::;  :  `##:..,;#'@;::::':.:;#:    ,:#;::::@`    :@@@@##@::@+  `;::::
:::':#'+''@;#+:::+@+,@.++;  ..+'`, ` +       ++::`:::::::::::::;'#+;@+@';;;;@++;::::'#+;:::;;::.+..::::#::::##;::::'#;:,''':;;;;:::::;..:  `##:::::::@;::::'  :;@:     ,#;::::@`    :.`.#` , :@+:::':::;
:;''@+'''@'@#'+@@@+@#@+++#::::+'.,`..#:#@@@@@#@@: :::::::::::::'#';+';;;;;;;;;;+;##;::;;;;:##@##@#######'::+;::;;;:::;';;;::;;;;'::::;@@@@@@@@@@@@@@@@;:   '  :;@:     ,#@@@@@@@@@@@@@@@@@#, :@+:::#::::
:;'.@+;'#'+'##@#####++++:@```+``+++++@  @  @  `+: ::::::::::::;@@#++;@;;;;;;'##'#:::::;;;;;:,+`:#::.::::+;;;;;;;;::;;;;;;;;::::;::::::::::::##: :,: @@;:   '..:;@:     :#+,;:;;` ;@  :,.@  ;::@+:::;::::
:,+'@+''+++@+#@+####+,+',@   +++'';++#  #  @   +: ::::::::::::;@#;;##;##;;;;;;;;#:::::;;@..::+`:.,::,',;;;@'';:;;:;;;;;;;;;;:;++::::::::::::#@:   .`+@@@@@@@@@@@@@@    .#+;` :.;;,@  ,. @  .::@+::#:::::
:,'.@+:''@@''+@@@##+#@+;,@;;;''+;''++#@@@@@@`  +: ::::::::::::@@;::;@;;@';';;;;;;@::::;;#::''#:'':'''';::;#';;;;;';'';;;::;+@'::;;:::::;;;::##':  .:,,@:#  ,, .;@:@,,,,;@+;:    . @  .. @..:,:#':;::::::
:,+,@+:''@'++#+'@;;++@#,,@   `':+@+++#` #  @` `+: ;;:::::::::@@::::'#;;@'';;;;;;';''::;;;@+::+::'; +,:;::;@;'';';;;'';:'@#;;;;;;;;:::;:;:;::#@'::::: :@:#,.:,.,;@:#   ,:#+;:`    ;@@@@@@@@@;`:';;+::::::
:,+'@'''+''+'@+'@++;'#+:,@;` `';#@'''@.,#  @` `+: ::::::::::@@:::::;;#;#;;;;;'';;'::@:;;; ;::+;;'' +;;;::;';'';;;:;;##;:::;;;;;;:;;:::::;:::@@:+:,:: :@:# .:: `;@:#   ,:#+::::.`.;@`..  @,`;::;:#:::::::
:,+'#+''#@@@@@@@#++ +' ',@##+`':,#   @ :#  @` `'#`:::::::::@@::::::;;#+;+;;;';;;;::::;#;;;;@@@;;';+';'';;;;+;;:;##'::;;;';'';;;;:;':::::::::@@::#:::.:@.# .:: `;@:@     #;:::`: ;;@. @#@#@#::#@:#.,:::::
:,++:@'+#++.+@';#+' ++'',@': `':,#   @  #  @   #';: `:::::@@:::::::;+';;#;;'';;;;:::::;@;;;;:+;;;';;;';;'';##@';;::;;;;;;;;;;;;:::;:::::::::+':::+::::@.# `::,,;@:#    :@#+++++####, . . ;:::'':#`, ,:::
::;++'@'#+++:@''#+';+;::'@   ;'''@   '  #++@    @@: `::::@@::::::::#''';@;;;',;;;::::;;;+;;;;#;;;;;;;;;;;;++;:;;;:';;;;;;;;;;';:;';':::::::;:+:::@:   @`#,,:: .;@:#    '#;`;  : @::::@@@@'::@@.:#:: ,:::
::;++.@'#+'+'@;:@:::'.  ,@@@@+###@@@@@@@@@@@@@@@@@: `:::@@:::::::;;:::#'@:;;';;;:::::';;'@;;;#;;;;;;;;;;;;;;@;;;';;;';;;;;;;;;;;;'';:::::::@'+';;;::::@;#;;;:::;@::....,#;`;.:;@@@;::::`:;:@#::'#,,:,:::
::'++;@'#@@#+@:,+   :.  ,@   ,:::#:;;;  #  @    @@: `::#@:::::::#:::::#;@;;;';';:::::;;;;;';;@;;;;;;;''++#;;+:'';;;;';;;;;';;;;;'';';:::::'@::;@:;+:::::@``:``.;@:::::::#; ;:+;:@:;+:::::;#@:::;#,,,:::;
::+++;@+#:.'+@''+   :.  ,@ : :`+,#::;;` #  @::,,@@: `:#@:::::::+::::::+;@;;;';;::::::;;;;;';#;;;;;++;;;;;;;;;#';;';;';;'';;;;;;;;;;;;::::;@##;:@:@#@#+++@++++++#@+++++++@++'@+++@+++@+#@';+::.:;#.` :::;
::++'#+##.`;'@;;+   :.  ,@ , : ,.#+++#++###@+###@#:::+@::::::+:::::::';;+;;;;;::::::';;;;;'#';;;+#;;;;;;;;;;;#';';;;';;;;;;;;;;;;;;';:::+@#;+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@#;;` :::;#:::::::
::++;#+;@###@@##@########@#######@,,,;  ; `@ ;':@+::#@::::::#::::::::';#'';;;;::::::;;;;;;@;'##'#;;;;;;;;;;;';##;'';'';;;;;;;;'';;';:::@++;:::::::::::::#::::::;@:::::::;;;':@::@::@:::::,    :;#:::::::
::+++++;#:;;'@  #,``:.  ,@   ::::# ` ;  ; `@ ; ;@;:+@:::::';:::::::::;;';#;;;':::::;;;;;;;;';;;;@;;;;;;;;;;;++'#@#:'';';;;';;'':::::;@;@:::::::::#:::,,,#...:.:+#:#@@@@`,:,'`:'#@#':;@@@@@@@@@@:#::::::;
::++'+++#;+::@  #:::'`  ,@;;;++++@;';+;;+++@;+;+@:+@:::::#::::::::::::;;#;'';,:::::;;;;;;;;;;;+@;;;;;;;;;;##+@++#@+@;;';;';;';::::;@;@:::::::::::'::,  `@`,`: :@+,@:::@''','.`  @:`.:;;'`:`:,'::#::::::;
::+++@++#@@@@@@@@@@@@`  ,@   ` ++@:::; '   @    @'@:::::'::::::::::::::;,+'#:,:::::;;;;;;;;;@;;;;;;;;;;;#+@#++##;@+#'#;;'';';:::'@+#;::::::::::::':::##:#,:,:,:@',@,`:@,:::'@@@@@@@@@;;'`,,``'::#:::::::
::++;+#+#    :::#+++#:,,;@   ` ++@   ; '   @:,.`'@::::+:::::::::::::::::,,,@+#:::::;;;;;;;@';;;;;;;;;;#+@;;;;;;'#;;:;#+@#'''+@@'#+:::;:::::::::::'::+::;#`,`: :+;,@:::@'+++#..``@``.,`;:;;;;;;::#:::::::
:::'++@+#    :::@+++#`  ,@   ` ++@   ; '   @+;:'@;:::+:::::::::::::::::::,,,,#'@;::;;;;;;;;;;+#;;;;;'#@;;'';;;;;'+;:::;@@@##@@+:;:::::::::::;;;::+##+#++'::::::;:;@:::@,,:,';;.;@;;.;;::::::::::#::::;::
::,+++@+# ,  :::@+++#.  ,@   ` ++@```;`+```#+++@';:+:::::::::::::::::::::::::::#+@;';;;;;;@;#;;#+@#@++;;'::';';;;#;:::;::::;;::;:::::::::::::::::;:;;;;;;:::::'#::;''';:::::;;;;;;;;;:::::::::::#:::::::
:::,++@+# ,  :::#+++#.  ,@   ` ++@;;;#:,,,:+@+@+@;#::::::::::::::::::::::::::::::+##@+;;;;'#@+;'@###+;;;':::::::;'@:::::::::::::::::::::;'::::::::::::::::;:::@#::::::::::::::::::::::::::;;::::#:::::::
::::++@+#@@@@@@@@@@@@@@@@@@@@@@@@@#.,@:   +@+@++@;:::::::::::::::::::::::::::::::::;#@++#@@#+++##;+';;;;;::::::::::'::::::::::::::::::'+#+@++;::::::::::::::::;::::;::;:::::;;:::::::;::;:::::::#:::::::
::::++#'#+   @  #  ++#  .:+  `   ## .:@; '@@;#+#@::::::::::::::::::::::::::::::::::::;;;'+'+@#+#@+;;;;;::::::::::::':::::::::::::::::'+#++++@+++::::::::::::::#:::::::::::::::::;:;:::::::::::::#:::::::
:::::#+++#:  @  @+++#@@@@@@@@@@@@@'::  #,@@;#+#+@::.       ::::::::::::::::::::::::::::::::;;;;';;;:::::::::::::::::@:::::::::::::::++#++''''+@'+''::::::::::#':::::::::::::::::::::::::::::::::#:::::::
:::::@@@@@@@@@@@;+@' ,+   # :+' :#:::  '+@;##++@:::::::::::::::::+'::::::::::::::::::::::::::;;#;::::::::::::::::::::+::::::::::::::++##++;;;;;+@;'+++:::::::'::::::::::::::::::::::::::::::::::#:::::::
::,::@'''`#:+@ ''@`,` @..@:::+   #: .::@@;##':@:::`````.::::::::+++::::::::::::::::::::::::::::@:::::::::::::::::::::;;::::::::::;'+++++#+';;;;++'@++++:::::;#::::::::::::::::::::::::::::::::::#:::::::
::,:'@+ +@@@+@.@#+#;#``@#;::;'  ;#;,,;@#;@+;`@::::`     :::::::+@+:::::::::::::::::::::::::::::;::::::::::::::::::::::+:::::::;++++++#+++#+';;;++# '@+++++++@#+++++++++++':::::''';';:::::::::::#:::::::
::,,+@+ +::@ @@,++@ .#@+@:::;,,,,#+++'+++++:@:::::`    `::::::+,+:::::::::::::::::::::::::::::'::::::::::::::::::::::::@++++'''++++#+++++++#+'':`:''''+#@@@@''@@@#+++++++++::::+++@'#++:::::::::#:::::::
::,,'@+ +++@ @@''#  #@++++  ..   @##;+#;@++@:::....`   `:::::+,+::::::::::::::::::::::::::::::@:::::::::::::::::::::::++@+++'''+#@+'+++++++++@+;+`';;''''#+@@;;;;;'#@@@'+++;::'+++#+@+++++':::::#:::::::
::,,''@,',#;+@;#+@ '#'+@@@@@@@@@@@++++@@+@@::::.   :::::::::+,+:::::::::::::::::::::::::::::::#:::::::::::::::::::::,++++##@@++++';;;;;;'+++@`;##'+''++++#+#+;;;;;;;'##@#+';;;;:;;;'';+#++#++#+;#:::::::
::,,,'#@@@@@@@'';  '#@#++@,,:'#@@@, :,'#+@+:::::   ::::::::+,+:::::::::::::::::'+'+++++'';:::::::::::::::::::::::::,+++#+++;;;'++;;;;;;;;+'+#, ,'##'++++@#@''@+'+@@;+@@@###+;;++@+;+@##@@@@++@;+#++:::::
::,,,+#   #:'';@`  .'++++@  `;;;;@, :#''@:;:::::::::::::::+,+:::::::::::::::;+##+++++++##@@#+#::::::::::::::::::::,+++@++++;;;'++;;;;;;;;''+;###.#''+++''''#@@';+@@@++++@+++::'+++#+++++++++++#++++;::::
::,,,+#,, #'#+@`'+''+++++@  `';;;@@@@@@+#;:::.:::::::::::+,':::::::::::::::'+#''''''+++++++++@@#'::::::::::::::::,++'#++++''++'+++';;;;;''+'.`''@'#;++'+##@@#'++++++'''++'++#@++'+#++++++++++++##++'::::
::,,,'# . @:'+','+#;'+;;:@'++##;;@:++@@+#;:;::::::::::::+:::::::::::::::::+@+'''++++'+++++''''';'@+:::::::::::::,+'++@++'++++++++''++++''++++'@'''#''+++++#+++'''+++'''++++::'''':@;+++++++++++###++::::
::,,,+#.,.@+.;,##@:;++';:@ .`';;,@:#+#@:@@:;:::::::::::+:+::::::::::::::;++++'++'+++++'''''+#;;;'''@'::::::::::,';+++#+'+''''''''''''''+++++`,';;;'''#'++++++++++''''''+++'::'.`;.@;++++';';;;++'#++::::
::,,,+#,:,#,,',#: :;+++':@,`,';''@,#+'':#@::::::::`:::+,++::::::::::::::'+#+++'+'++++++''+'+#;;;;;;;;@;,:,:;,:'''#+++#'';;;;;;;;;;;;'+''''++ ;';;;;;;;@++'@++++''++',''+++':''#@#.#;'';;;+'''++#'+++::::
::,,,+# ` #  ;.+'  .++;;:@,.@@@@@@,#+;,,#@::::::# `::+::;;:::::::::::::'+';#+@+'+'++++'+++'+;';;;'''';+++';;;';;@++++++'';;;;;;;;''''';'''++'#;;;;;;;;'@##+++##;;;;;;;'''+':+.#.#`@;;;@@@'+++++@;#++::::
::,,,+# .`#``;@'@@@@'+'':@` @ ': @;#+;`.@@:: ,:#  ::+:+::::::::::::::::++;;';;'+'+''+'++++'@;;;';';'';';@+''''+#++++++';;;;;;;;;';;;'';;;;'++@;;;;;;;#+'+@+++';+#';;;;;;;':'';+:#:@+;,#;@;++++++:@#+':::
::,,,+#`.`#``;`:`.`,++@@@@` + +,:@+#++`.@@:: ,#  ::+:++::,`:::::::::::'+;;;';;++'++''++''''';;;;;'..';;';+#@@+++++++''';'';;;;''+''';;;'''+''@;;;;;;@++''##++++''#@+++++++'++,+,# @'++@'@'#####;;'#++:::
::,,,+# ` #;`#+; ; ,+@'`.@.`#'++'@+#+#`.@@:`:#  ::+::;;:::.:::::::::::'+'#@#'+'+'++++++'+++;;;;;';,;;;;;;++`;'+++++'+++'++''';'++'+''''+++'++#;;;;;@++;;;+#++++++++#+++++;:'+++@@ @;:;#;@.+''+@';+#++:::
::,,,+#...#  ;+;';:,+@+`.@` +.; `#+###`.@@:,#:,::+:+::::::::::::::::::+@'''@+'++'++'+++'++@;;;;;;;;;;;;;;''`''''+''+++'++++''++++'''''''''++'+';;'#++++''+#;;:::''+@+++'+::+'';:@ @;::@@#,+++'+@;+#'+:::
::,,,+# . #,`#+;;;`,+@`. @` +.;.`@+#+@+#@@#::`::+:++:::::::::::::::::;+''@+''#+'''''';+'++@;;;;;;`;;;;;;; # '';:+'+++++'++''+++''''++''''+++++@;'#+;;;;'':'@''::::;';::::::;;,#:#,@''';,'+++'+'+'+#++:::
::,,,+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@ ,@@:: `:+::+':::::::  ::::::::;+''''+#++''',';;++'++;;;;;'';;;;';;#@'#'#':'+++++'''+++'+++++''++++''''++@++';;;;'':''++;+;:;::::::::,':#.# @;`,++++++++'+++#++:::
::,,,+# ` #  ;   ;::+@ . @, #::::@+#'@::@@:``:+:+:::::::::::` :::::::;++++@+'+++''.';;++'+'';;;.:.;;;;;'':::.+.@''++++++++++++++''''+';;::;''+#+++';;;;;':'#++:::'@::::::::,;.@@@@#'+'+++++++''#@+#'+:::
::,,,+# ` #  '@@@'::+@.,:@: #::::@++#@++@+:.:+:++:::::::::::,.::::::'+#@#'':'+++'''';;++''';;;;''';;;;;;':::,+.@:+++++++++++++';::::;;:::;;;'@+++++;;;;'':'#++:::;#;::::::::,';,:`+++++++++++++@#+#@::::
::,,,+# ` #  ;   ;,;+@ : @  #::::@+#@@:;@;::'+++;:::` ,::::::::::::++@++';''+''+'''';;++'+#@+;;;;;;;;';;++#:.+;@+++++#++##@@@#+'+''''';''+'+#;;+++++''+';:'#++:::++::::::::::::'''+++++++++++'++++'@::::
::,,,+# ` #  ;   + '+#@@@@#@:. ::@++@@';@;:'::;;::::  :::::::::::::++@+++'''++++';;'';''++@+''+##+;;;;;.++# '+ @+++++@+++'''':;+++':;'+###''+':''++++'';::+@++:::'+::::::::::::++++++++++++++'+;+#++::::
::,,,+#@@@@@@@@@@@@'+;+++@'::::::@###@@;@;:::::::::` `:::::::::::::++#++++++++++++++++++++++;;''';'++++'''@+;##'+++++@';::';:+++++;:::::::::@+':''''''::'++@'++;:++::::::::::::'+++++++++'+++'@@+'+'::::
::,,,+#:+++#+;;;;';;;;+'+@'::::::@+#+##'@;:::::::':   :::::::::::::'+@@@###@@@@@@#+++++++++@'';     ++':::@;;++++++;'#::;+''++++++::::::::::+++::::;:::++++@++++++@,:::::''';::;++:::::::'+++'++##+,::::
::,,,+@:::#''''';;:;''+++@'::::::@+@#@#+@;;::::::@@@,  ::. :::::::::'++++++''''+++#@@@++#@+@@'.   :::...::@++++++;:''''''''''''+++';'++++:::'#+;::;;:'++++'@+':+++#+,,,++++'::::::'+#+';::'''';#+#+,::::
::,,,+@::+``';';;';;'+';+@'@@@''@+@+##++@;;:::::@@+@@+     :::::::::@:';:::::::::::;'';:;'+++@;  ;:::   `:+@++++:''++++++++++++'+++++++++'::+@++';++####+++@+;:::;@+++'++',:::::'+;'''+:::++++++++@,::::
::,,,+@''` .+@@@;;';;;';#@@@@@@@@@@@@+++@;;::::@@+++@@   .::::::::::@::::::::::::::::::::::'++#'';:::,,,::'@'+:;'+++#+++++++++++'+++++:,++::+++++@+'+++++++@'+:::+:+++':::::;';:#'++++:;+'++'+;+++@,::::
::,,,+@.  ,@@@@@@@@@@+;+'@:::+++#@'+@@@+#;;::::@+++++@: ::::::::::::;;;;;';'';'++++++++';:::;++#;;:::::::::+@''+++++@++++++++++++''++++;++':''+#+++++++++++#@+:::::+++:::+'#++''++++++++++''++@#+'#,::::
::,,,+@,`'@@+++++++++#+';@::::    .@@@@++;;:::;@+++++@@':::::::::::+++++++++++#@###@#+++++:::++'#::::::::::+:'+#@@#+#'''''+++++++++'''++++::;+#++++++++++++'@+:::::'+'::';;:::::;';'+'''''''''#@#'@,::::
::,,;+@+#@:#++++++@++##+++@;:,     +@@@#+;;:@:@@@+++#@:::::::::::'+@++++++++@#+++++++#+++;::::;;;@::'++;::::''++++'+'++++#::'++++++++++++;+#@##+++++++++++++@+:::::'+::+:::::::::::::+++'++++''#@@',::::
:,,,;'@#@::#'+##@++++#@++++@;,     +@@+@+;;::@++@@#@@#:`:::::::'+@+++@@@@@+'++++++++++#++::::::;;;'@'+':'+''''''+++@+++++#::'+++++++++##++++++#+++++#;;;##++@+'::::';::;::::::::::::::++'+++'''++#@+,:::
::,,,+'@;::@@+@@@#+++++++++@@;    `+@@+@+;:::'@++@@@;,  :::::::+#+++'''++++'+++':::::++#'::::::;;;;;@+:;'+++++'''++@++++#@@#+;+'+++++#+++++++++++++#;;;;;;@+;;+::::'':;;:::::::::::::::+'+'+'++'#:+++:::
:,,,,+@###;#++++++@++++++++@+@'::::+@@+#+;:::@+@+::` ` ,::::::+#;'++';'++++++++'`   :+'#::::::::;;;;;@:''++++++''+'+++++#,`.#+''+++#+++++++++++'@#;;;;;;;;+#+#+::::'+::'::::::::::::::;'+++++++'+;;;#,::
:,,,,+@+++++++++++#++++++++@++@+';++@@+#+;;:'@+:@::. .:::::::+@;;'++''+++++++++'`::: +++;:::::::;;;;;'+''++++++'++#+++++'+: @+# ++#':;+++++++@++++;;;;;;;;+'+@+::::'+::#:::::'++++'''''++:::+++'++:@@,::
:,,,'@#+++++++++++++:++++++@+'+@@@@@#+@@@@@@#::::#:::::::::::+';;'+'+++++++'++++++++#++''::::::::';;:'+';++++##@@+@+++++:#: @'+ +++++++++++++##++#';;'';;'''#@+::::'+:::+:::::+++++++'++:::::+++++@'+,::
::,,+@+++++++++':++@:'++++@+++++#+;+@@++'#::::::::::::::::::;#+..:::++++++++''+++++'@+@'::::::::::::;'+''++++++'+++@#+++;+#+';:;+;++++++++++#+@@++++++++++++#@+::::'+;:::+:::::'++++'+++:::::++++++:;,::
::,,+@++++++++++`+++@++++@+++++++@;+@@++'#;::::.,.`........:;@+,,:::++++++'++''+'++++@@+:::::::::::;;#+++++@+++'++++++@#++` ++` ++:++@#++@#@@#';  +''++++++++@+:::::+'::::#::::::+++'+++:::::+++'++:;,::
::,:@@++++++++++`++++@+++#++++++++;+@@+++#::::: ,.` `    ` :+@+..,::++++++;:;';''++++++#''::::::::;;;#@+++@+++;;'@+++++++#@+++;+::;++`+','++++++',@'+:,++++++@'::::::':::::#;:::::'+++++::::;++''++:;,::
:,,;@@++++++++++'+++++#++@++++++++++@@++++::::::::::::::::::+++  .,:++++++++''+'+++++++#+':::::::';;++++++++++'''#++++++#@@++:,:++++:`+++++@++++#@#++,;+++++#@'+::::::::::::;+::::'+'++++:::+++''++:;,::
:,,;@@++++++++++++++++#++@#+@+++++#+@@+++'#:::::::::::::::;+@++`:``,++++;;'+';+''''+''+'#';::::::;;;@+++++++++;;'+++++++#++++::+++#++++'++++++##++++#+++'+++@#+'+':::::;::::::#:::;+''++++++++'+'++:;,::
:,,+@@+++++++++++++++++++@##@:``::#:@++'#':+:::::::::::::++#+++::::'++++++++'++''::;++'+#++;::::;;;'++++++++++''@++'++''@++++: :+++++++++,''@;++++++++'+++++@++++++::::+:::::::+::++++''''''''+++++:;,::
:,,+@@++++++++++++++++#@+++@@:''::#;@++'#+::++:::::'''''++@'+++++++++++++++++;'+:+;;;;;;@@+'':::;;;@++++++++++;'#+'++++++++++;++#@+#.+;@@#;'+; `++++++#'++++@+++++++;;:++::::::+:++++++++++++++++++:;,::
:,,+#@+++++++++++++++++++++@@:`.::#:@+++++:@'++;;####@@@@#++;+++++++++++++++';+'++;;;;;;++++'+:';;;#++++++++++''++++++++++'+@@#+++'`@+;'+'#+;:  '';;;++;++'#@#';;++++++++++++++++++++';;'+++++++'++:;,::
::,++@+++++;:::::;'++++++++@@::;::#:@+++++@''+@++;:;'';;;;+++'++++++++++++++:+;++++;;@+'@+++++':';#+++++++++++'@+++++++++++#++.++'#++ '+,.#++';'''++++@+++++@@';';++++++++++++++++++'''';''+++++'++:;,::
:::+#@+++;::::::::::'+++++++@:,:::#:@+++'+'''+@+++++++++++++++'++++++++++++'';++++++@;;+++@#++++:;@'+++++++++''+++++++++++@+++++@++++++'';'':+;'++@@@@@+'+#+@@++'''''+'+++++++++++++'''''''++++'+++:;,::
:::'@@++;:::::;'';::::++++++@:`.::#:@#++++'''+@++++++++++++++++;++++++++++'':+++++#+;;@'++'+@+'++#:::::::;++''@+++++++@#+@''+#@+';+:::::  ;  ;;'++@;++''+#+##+#+++++++++++++++++'++++'''+'++++''+++:',::
::::@#+;:::::;;;;;;;:::;++#+@:''::#:@#+++'+'''#+++++'+++++++';;';;'+++++''''''+++#+;;++++'''+#@+'#'+++;::+++''+++++++@+++++''@#+#;::::::,,:.+@@@@@@++++@@+++''++++++++++++++++++'+++++++++++''+++++:',::
::::@':::::::;:;;;;;;::::+#+@: `::#:@#++++#';''+++++'''+++++'';;';'+++++++':+';:#';;;#+++''''++@@'+++++:+++''#+++++++#++++@++;++###@@@@@@@@@;`#  #+#@@@@#+'@'@@@++++++++++++++++'++++',,::''+++++++:',::
::::@:::::::;::::::::;;:::+#@+++++#'@#++@+@''';+++'++++'++++';;;;';+++++''++'+#@;;;;@'++''''''''#+'+++;'++'';#++++++++++++@#';+++@@'#` .@  `  #  @`  .@++#:@:@@++@++++'@:'@+,:'+'+''++++++'++++++++;+,::
:::;@::::::::;::::::::;;;::#@+'   + +#++@+@;'++++++'''''++++';';';';++++@#++;;;;;;;'+'';;;'''+++#@;###''++''#++#@@@@@#@#@;;#`;':@+  #  `@..';;#` @    `#::@@:':::+@@#+;:.:, @##.'+''+++:''+++++++++;',::
:::+@::::::::::::::::::;;;::+#'.` + +#++#++'++#+++'++++++++'';;;;;;+;++@++++;;;;;;;@++;;;;;;+#+'+''++;::;+''+@#++++++++#;;'',@@@+`  @+'+@###+##';@```#`@#;:@::#@::'##@+::@ :' .@''''@++@@@@@@@@@@@@;+,::
:::@#:::::::::::::::::::;;;:;++'. @ +#+++#+@+'@++'+'+++++++:'+++++++''+@::'';;;;;;#++;';;;;'#+''+#++;:::'+'@+@@+@''+@+;;;;# @,,.'::`#```@'++:.# ,@   #  @@;@+':::,@;;;;.@`'. +  '@@++##++@:,@@@': :;+,::
:::@'::::::::::;;::::::::;;':'@+. @ +#+++@+@++++++''+++++++:''''''++++'#'++';';;;'++;;;;';;#+''''@`'':::'++++#+@#;;; `;;'+;@;:.`++':#```@;;+:.#::@ ` #``+@#+# ` :,@;;;;;:#@#@:#.:+@';,,:'':,#,`@: :;+:::
:::@::::::::;;:;:::::::::;;;;:+#+'@+'#++++#+@++@+++'+'+++++;+++++'++++++'++#;;;#'@++;;;;;;''+'+'#;:;'+;::+@@@+`++;,;;;'##;;@.::@@@@@@@@@@@@@@#@@@@#, #  ;#@;,`..:,@@@@@@@#;:+`@###;;;'';':::#`:@;+'@+;::
:::@:::::::;::::::::::::::;;;;;#++#;##;#++@++##+@+++'+:;;::++++++'++++++:+++;;;+##++;;;;;;'+''++@:'+'++:;+#++;:+##;;;@;++;@::::,,``+:::@ `  ,```:@:'@###+'@+'@##..@''++''#;`+`::#+'@++++++++'''@';:'+;::
:::@:::::::::::::::::::::::;;;:+@'#;@@;++++++'+@+@++'++++++++++++'++++++;#++++++++#+';;;'#;'+'++#'+'++::+@+'`+++`++++#';:@#,:::,.``+   @,:``, ` ,@  :    `@``#   :'+';:''+``',,,#+'+ `,',,;';';@,;:;+:::
::'@::::::;:::::::::::::::::;;::+++@##@++++@++++#+@+'++++++++++++'++++#+;+++;++#+++#+';;#;'++++#++'++::+'++;,@++@@+#'+#@#+:;''',,::++++@ ,# , :`.@  : :. .@ `#   :+'''''+@#+#++##+'+`:``:..:@:`@.;;';:::
::##::;::;::::::;;;;:::::::::;':;@+++#++++++#+++#++@''+++++++++++'++++#'+++++:+@+''++##'''+++''@'+++;:#+'++;@`#+@':+'@#,`@; +'+  ::+,.:@ `# ,::  @ .:  . ,@ `#  +#@@@@@@@#:;@::;#+'@@@@@@@@@@@@@@#:@#;::
::@'::;;::::;::;:::::,::::::::;::'#++#''++++@++++#+++++++++++++++'++++@'+++#@:++';;;;;;;;'++''+@#@++;@+'#;:@;.@:, ';@;.:,@; +'+ , ,+. .@''+'@#@''@ .:..::'+::#'@;:   ``` #+'@'+'#++#:,:; .  #  @;@ #@+::
::@::;;;:::;::::;:;;:;:::::::::;::#++#+;+++++@+++@;+@++++++++###+'++++@;;+++#:#+';;;;;;;;';;;;;@++#++@:+@:`+#+''::#@:.:#@@@@@@@@@@@@@@@@.,, @+@  @ .; :;:@:::@'::;   .   #,'@ :.#``#:;   `  #  @;@ ;#@::
::@::;;;;:::::;::;;;::::::::::::;:;@@+++'++++++++@:;@+++++@@';;:+@++++@+'+++#:#+';;;;;;;'';;;;;@++#+@::+#+:#'+.:.@+`#+ .:@  .::  ,`  : @,`,`@+@  @ .: ,  @::.@::;'++##@###:'@':;#:`#:;   ```#  @,@ `'@::
::@::;;;;::::::::':;;::::::::::::;:++@+'''++++@+'#:;#++'@';;;;;:''+@+#+''':+#'#+';;;;;;;'';;;;;@+#+#:::++##':.;@@`+: @  :@   `: .    .`@,:, @+@;;@  : :`,@   @.:`:,,'+@  @##@@####+#:``, `  #  @:@::'#;:
::@::;;;;::;:;::;::::::;;:::::::::;:+'#@+''++++@+#:;;@@';;;;;;;::;:++'';++:+++#++;;;'''''';;;;;@++@@+::;+#+,:@@` @  `#@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#:   :@#: @  `+: ::@.  @#;;;:#:+,:`.: `,`@; @,'. '+::
::@:;;;;::::::;;;::;;;;::;:::::::::':'++#@+'+'++@@:;;;;;;;;;;;;::'+++'';++:#++#++''++++;++'++++++++++;:'++++@, .#+.@@@@` @,;:;`,,,, .:,+ ::  ,  ,@:#@@@@@@;;@@@+'::,:.@+  @#;;+++:+,++##++++#@ @  ` ++::
::@:;;;;::::::;':;::::::;:::::::::::::;++'@#+;'++':;.;;;;;;;;;;++++++';;'':#+'@+''++'++++;;;;'++'+++#':+@;'@``''+#@ +#@` @':.':,,.,    @`::  ,. ++, +   @@ @+. +;+@@@@@@@@@#';::;:+,.;``:'..#@ #  ` ++::
::@;;;;;::::::;::;:::::::;;:::::::::';::'+++#@@@+''.;;;;''';;;;'+++#'''''':#+'@+++++'++++';;;'+#+@@@++:@:;@`@#,`@#' ##@ :@:+:.@,,.,:::;',:: ,``,@:. @,,,##++.#@@@'#@@@@@@#+#:'++'++ `+:::+..#',@';;:;+::
::@:;;;;:::::::::::::::::;;::::;;;;:+:;:::'+++++@+:.;;;;+++++++'++++++'''++#+;@+++++'++++';;;##++++++@@@+@##:+ #+:+`@#@  @;':`#:,:: :. ` :, '`.#+:` ;   @#++:@',:@'@;'+@:'+@+:+#::@##'.'++..#  @,;,;+@::
::@:;;;;::::::::;:::::;;:::::::;;;;;'::;::::++++++;;;;;;++''''+':'+++++''+'#+;@+++++''+++'''@@+++++@::::@@::#+'@;+:``#@  @`.:.... : ``.  .``'`.@   `    @@ @.,  .@:::`;;;`#;@''@@@@+ ','+:..#: @.:,@@#::
::@';;;;::::::::::::::;;;::::::;;;;;'::::;:::'++++;';;;;'++'''++++';'+++'+'#+:@''+++';;+++++#++++'+'::::@@'::;#@@@@@@@@@@@@@@@@;.;`   .   #    @ '@#@@@@#@+;#+,`;;  :`,.+`#;:;'@@##+@'#++:..;,.@`:::+;::
::#':;;;::::::::::::::;;;:;::::;;;;:+: `,:;;;@+;;;'#@';;;'''''+`'+'''''''+;#+:@+++'+';;;+++@#+##+#+:::::++@:@`:# .`` #@ ,@  :;;+; `,: ,   # .``@`,.,::;;:@# @ +,+'''+:;''#@#;#+':##@@'@@@@@@@@@#.`#:+:::
::##:;;;:::::;::::::::;;;::::::;:::'::,:::'#:::;';;;;;@''';;;;+'''++'++++':##:#++++'+';;'++#++;;;:::::::+++@:'##@@+;,#@:'@  :; +`:.:' ,   #.`  @ .:,:::; @` @ + ;,  +;;,;##;;@##',#''+''+..,@''@:,@@@:::
::@@:;;;:::::;:;:::::::;;;::::;;::'' ::::@;;;:::::::::;;@'';;;':;''+'++'+''+#;+'++++'''''++@@+::::::::::++++@+::@++++++##@++#+#;`:.:' ,   #``  @ ,:,:::; @` @`+;',  +::++#@;'##:+,#;:#+@`..,#::,:::#;:::
::##:;;'::;:::;:::;::::::;;:::;:::++:::#;''';;;;;;'::::;;#'';':'+;'''''+'++''@::'+++++++++@+#:::::::::::@++++@@@@@@@@@+,`@  :; ;`:: ` ,@##@#@##@ ..::::; @` @:# :,  +::,;#@;:#':::#,,+;`+..,#.   .:+::::
::#'::;;::;;::;::::;::::::::::;:::++::#';;;;;;;;;;';';::;;+'';::;'+'''++''#::::::'+++++++'';;::::::::::::@####@#@  @ .;@@@@':; ;`:: ` .::::@,``@'#@#+''+@@+'@'''+:,,+;;,;#'.`#@@@@@@@'+'@+++#     '@::::
::+;#:;;:::':;;;::;::::;::::;;:::'+';';;;;;;;;;;';''';;::;;#';+::::'''+'''#:::::::+++++';##':::::::::::::,,:,,;+@''@:,::.` +@@@@@@@@#`,::,`@   @`,@     @+'.@   ,. `:# ,`#:  +'+,.,`+,``@..,#     #@::::
::''@:;;:::::'::::;:::;::::;;;:::+++';;;;;;;;;;;;;;'';;::;;;#;'++;:;+'+'+#::::::::'+';;;;#@+;::::::::::::;,,,,::@,::;::;,,,.. .:..:;#@@::  ;  :@  #     @,@.@,  ,::::#```@``:+;+. .`#:;;@..,#     @+::::
::;#:::;::::::;::::::::::::;;:::+++';;;;;;;;;;;;;;;;;;;:::;;+'''''+''+''#::::::;;;;;;;;;';;@:::::::::::::;,,,,,,@ ,,,,':'':,:,,,:,,:.,+@`  @:::@ :#.` .`@`@.@+#@@;,..#:: @;,.+++';::#::::..,@:` `:@:,:::
::;@:;':;:::::;;:::::::::::;;::'++';''';;;;'';;;';;;';;;:::;;+'+''''''+++;;''';;;;;;;;::@#;+:::::::::::::;,,,,,,@`,,,,,,,,,,:,,,:,,,,::@;;;;;''+++#:::;;@.@.#'++#;:::#,,,@,,`+;.....+...,..,+;::::#,,:::
:::+:::;:::::;:';::::::::;;;;;:++#'';;;;;;;';';';;;;';;;:::';+######++#+;';;:;;::::;:';;##'':::::::::::::::::,,,@:,,,,,,,,,,:,:::,,,,,;@;;;;;;;;;``:   '  #'::::'',.:#,, @####@@@+::#.: ;..,+'@@@@@,,:::
:::;@:;:;;::::;::;;;;;::;;;;;::+@;';;;;';;;;;'''';;'';;;::::;;;;;;;+;::;;':::;;;;';;;''''''#::::::::::::::::::::@;::::::::::::::::::,,;@;;;;;'''#@+#...#'''@::::'#+++#:;:@,.,#:``+::#.``;..,+++.#,@,,:::
:::;'+:;::;;:::;::;;;;:::;;;';;+';;';;;;;;;;;;;;;;;';;;;::::::;;;;;@:;;'';:::;;;;;;;:';;'''@:::::::::::::,::::::@::::::::::::::;:::::::@;;;;;;##';;;;;;#+++@'++++#########++#:`  '  + `:;..,  :,#,@,,:::
::::;'@:#;:;::::::::;:::;;;;::+@;;;';;;;;;;;;;;;;;;;;';:::::::;;;;;':;;;;::::;;:;;:;:';;+';@::::::::::::::::::::@::::::::::::::;:::::::@;;;;;;;;:;'@;';#+++@:;+:;;;;;#,::::#::'::'':#`,:;..,,,;,#.@,,:::
::::::;#@;#;;:::;:::::::;;::':+;;'';;;;;;;;;;;;;;;;;'':;'';:::;;;'@';:::';:::;;:;;;;;';;@';+::::::::::::::::::::@::::::::::::::;:::::::@;`;.'::;;;;';';#+++@: ``;';;:+`. ,:,+:',,::,#@@@,..,+'+``,@,,:::
::::::::;#@;;::::;::::::::;::+@;;;';;;;;;;;;;;;;;;;;';';';;':::;;#';::::;;:::;'';;;';:;;@#;'::::::::::::::::::::@;:::::::::::::;::::;:;@  : :,:;;'#+;;;@+++@:  ::';':+`:: :,,,.,,,;:#'''';;';'+;''@,,:;:
::::::::::;;;';;;;;:::::;:::++';;;';;''''';;;;;;;;;;;;;;'';;;::;;':::::::;;::';;;;;:;;::+@;+;;::::::::::::::::::::::::::::::::::::::;:'+; ,,:;;;;;;;;;;#++@::,:::+:`,#`   ::,, .#: ,+ .::..,::;   @,,,::
::::::::::;':;;:::::;;;:::;++@';;;;';;;;';;;';;;;;;:';;;'';;;::;@;:::::::;';;';;;::;;;;:;+#++:::::::::::::::::::::::::::::::::::::::::';';;;;';;';;;;;;';@;:';;';;::,#::::;::,:+:;::+:``,..,:,;  .@,,:::
::::::::::::::;;:::::::::'''@++;;;;;;;;;;;;';'';;';;;;;;'';;;::';;:::::::;'''';;;;;;;;;;;@'++;::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;@@@@@@:'::;;;;;+;,`# ````:#:#.+:;:+:  ,:,,,,; .@,,,:::
::::::::::::;:;+#++'''''+''#+++';;;;;;;;;;;;;;';;'';;''''';;;::@;;;';::::';:;;;;'@@@#;;;@##;+;::::::::::::::::::::::::::::::::::::::::;;';;;:;;;;@#+++'++:#@#####@@@#@#++::,`@`.,':;#@@@@@@@@@@@@,,,,:::
:::::::::::::;+@@++'';';'@++++++;;;;;;;;;;;;';;;':;;;;'';';;;:;';::;;'''';;;;;'@;;;;;;@@;++;++::::::::::::::::::::::::::::::::::::::;:;;;:;;;;;@##@@@@@@@########:::::::::@`#:#`.+;;;::::``:::::,,,,::::
:::::::::::,+++@##+';;+@+#+++++++;;;;;;;;;;;;;;;':;;;;;;;;;;;:+;;:::';;;;:;:;;@;;;;;;;;;:'+#'''::::::::::::::::::::::::::::::::::::::;;;;;;';;@+@;:::#::'       ,@::::::::,@:::#:;@:.'++#. ;:   ,,,:::::
:::::::::,,,+++###++'##+++#''#,++';;;;;;;;;;;;;;;:;;;;;;;';;:;@;;:::';;;:;:;;+;;;;;;;;;;';@+'';:::::::::::::::::::::::::::::::::::::::@;';;;;+@+@'::@+@':@@@@@##:@ ,::::::#` ::`@@`.@;';::::::::::::::::
:::::::,,,,,,++#@@+@#+''+',@.+++++';;;;;;;;'';;;;:';;;;;;;';:;';;::;';:;;:;;'#;;;;;';:;;;;;+@+;::::::::::::::::::::::::::::::::::::::;:@;,;;'+++@+@@; +#+ `:::,,:@::::::::' :: `@` #::;'::::::::::::::::
::::::,,,,,,,@###@+++++'':,.@.@++++;;;;;'';';;;;':';;;;;;'';;+;;;;;;';;;;;;;';;;;;':;;:;;;;#+#'::::::::::::::::::::::::::::::::::::::::@';;;++##@#:;':#'::;;;;..:@.:::::::+:::,@#:@::::;':::::::::::::::
::::::,,,,,,+#+++++++++++'.+ +''`++;;;;';;;;;;;;;:;;;;;;;;'';@;;;;;;'';;;;;;#;;;;':;;;:;;:;;@+++::::::::::::::::::::::::::::::::::::::;:@''+++#+@:::;@';'       .@`::::::::'';@.:@:::::::;:,,,,,::`,::::
::::::,,,,,,+++++##+++++++;+`+''`:+';;;;;;;;;;;;;;;;;;;;;;;:'@''''''''';;;;;@'''';;;;;;:;;;;;@+++::::::::::::::::::::::::::::::::::::::::@++':##'''''@''+;;;;;;;+;:::::::::::@` #:#::::`#;;`    :: .::::
::::::,,,,,,+#+++@@++++++::+@`++'``+;';;;;;;;;;;;;;;;;;;;;;:;#::;:;;;;;';;;++++;':;;;;;;:;;;;;@#+':::::::::::::::::::::::::::::::::::::::;@++:'+@:::::,.:`:: ::`::::::::::::@+ @:::#::,@ ;;##@##:, .::::
::::::,,,,,,+@++@@#+++++;:@:,#.++',;';;;;;;;;;;;;;;;;;;;;;;:;+:::;;;;;;;';'#+'+'';;;;;;;;;;;';;##++;:::::::::::::::::::::::::::::::::::::::@@+++@::::::,:,::.::,::::::::::::@.#:::::#:@`` ; .# :#, .::::
::::::,,,,,,:++++#+@+++++::',::#++';++'';;;;;;;;;;;;;;;;;;;:;@:::;;;;;;;;'#;''';;;;;;;:;;:;;;;;;++++'::::::::::::::::::::::::::::::::::::::::+@@@';;;;;:::::::::::::::::::::@.@:::::`: `:::::# ,#` .::::
::::::,,,,,,,+@++##@'+++++@+#,#,@'++++++';;;;;;;;;;;;;;;;;;:;@::;;;;;;;;;@;;+:';;;;;;;;;;:;;;;;'+@#:'::::::::::::::::::::::::::::::::::::::::;::@::::::::::::::::::::::::'':@#@::::;,:.::::::#;:+` .::::
::::::,,,,,,,,++++@+@++++#+'@+'''#+++##++';;;;;;;;;;;;;;;;;:+';;;;;;;;;;#';'+'+;;;;;;;;;;;;::;;+++#@::::::::::::::::::::::::::::::::::::::::::::@;:+++++++':+++++'::+++++:::@:@::::;, :'::::::  ::`,::::
:::::::,,,,,,,+@+++@+#++++++++;''+@@++++@+';;;;;;;;;;;;;;;;:+'@;;;;;;;;@+''':++++++';;;;;;;::;'+++#+++::::::::::::::::::::::::::::::::::::::::::@;:+++++++':+++++'::+++++:;:@.@::::;, :;::::::,,::::::::
:::::::,,,,,,,+@++++@+@+#:+++++'+@+@@####@+';;;;;;;;;;;;;;;:;+'@;;;;;#++++++'++++''++;;;';;::;'++++#@+;:::::::::::::::::::::::::::::::::::::::::@':@@@@@@@@@@@@@@@@@@@@@@@#:@:@::::;, :;;:::::::::::::::
::::::::,,,,,,'@++++++@#@#++++###@#@@++++@@+''';;;;;;;;;;;;;:'++'###++''+;;;'+++;;;++;;;;;;::;;'+++@#+':::::::::::::::::::::::::::::::::::::::::;@:;;;;;;;;;;;;;;;;;;;;;;:::@.@::::;, :;;:::::::::::::::
::::::::,,,,,,,+#++++++'@#+@@@@#@@++++++++@@+++'''''''''''''';'++++++';'+;;'++++;;;++;;;;;;::;;'+++@+:+::::::::::::::::::::::::::::::::::::::::::@+::::::`.``: .` ,`,::::::@::@::::;, :;;:::::::::::::::
::::::::,,,,,,,++@@@#+++++@@@@@@@@@@+#@@@@#@@''+++''++++'+++::''''''''''';''+++++'++;';;;';::;;++++#+;+:::::::::::::::::::::::::::::::::::::::::::@@@@@@@ .` ; ,. ; ;@@@@@@;  :'++'';';:;:::::::::::::::
:::::::::,,,,,,,:';'+#@#+++++++++++#@#+''+++@#,;++'+++++'+'';::++++++++++++++++;';+';;;;;';::;;++++@++'::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::,,:;::::::::::::::::::::::::
:::::::::,,,,,,,,,,,,,+#@+++++++#@#+:,,,:::;+@@:`+++'++''++''::'+''++++++++++'''''+;;;;'';;::;'++++@#+':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::,,,,,,,,,,,,,'+#@@@@@#+++,,,,,:::::'@@;'+''++'+''++:::+''++++;;;'+''+++'';;;;;;;;;;;'+++++@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::,,,,,,,,,,,,,,,:;;::',,,,,:::::::::'@+@'+'++++'++':::'+'+++';+@#@######@@+;;'';';;;'+++@+++::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::'@+@+'+''+'''+;::'++++++@##++++'+++++++#@@+'+@##@@++#+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::,,,,,,,,,,,,::::::,,,,::::::::::::::'#++@#++++#@@@@@@@@@@@##+';:::::::;++++++++#@+++++#+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::;##++++++@#+::::;++++'+'::::::::::::::::;+++++##++;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::+@##@@++:::::::::'':::::::::::::::::::::;:+++++::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::'++'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#                                                                                                                                                                                                       
#                                                                                                                                                                                                       
#                                                                                                                                                                                                       
#                                                                                                                                                                                                       
#                                                                                                                                                                                                       
#                                                                                                                                                                                                       
#                                                                                                                                                                                                       
#                                                                                                                                                           .                                           
#                                                                                                                                                          :#+                                          
#                                                                                                                                                         ,@#; `                                        
#                                                                                                                                                        ;@#' ,@                                        
#                                                                                                                                                       +@#;+:## `                                      
#                                                                                                                                                      ###;++'#+@+                                      
#                                                                                                                                                     +#;:;+;#'@@##                                     
#                                                                                                                                                    +#;;;;;;#'@@@#                                     
#                                                                                                                                                   ++:;:;;:''#@@@#                                     
#                                                                                                                                                  #'::;;;:;+'##@@#'@                                   
#                                                                                                                                                .#;::;;;;;''+'#@+###                                   
#                                                                                                                                               ;#';;;;;;;';;;:;#;##'                                   
#                                                                                                                                              ##;;;;;;;';;::;;;+''#`                                   
#                                                                                                                                            :#;;;::;;;;';::;;;;'+'+                                    
#                                                                                                                                           #+;:;;;;;;;;;'++#####+'#                                    
#                                                                                                                                         ,#;;;;;;;:;;''##+;;:::'#'#                                    
#                                                                                                                                       `#+;;;;;;;;;'+#+;::::::::'@                                     
#                                                                                                                                      ##';:;;;;;:;#+:::::::::::::#                                     
#                                                                                                                                    ##'';:;;;;:;++;::::::;::::;::',                                    
#                                                                                                                                  ##+;;;;;;;;;++;::::::::::::::::'+                                    
#                ,.                                                                                                              +#+;;;;;;;;;++;::;:::::::::::::::;#                                    
#                +##`                                                                                                          +##';;;;;;;;'#':::;;;::::;::::::;;:;#                                    
#            ,`;+#+##,`.                                                                                                     ;#+';;;;:;;;;#+::;:::;:::;:::::::::;;;#                                    
#           ;##+##++'''++'.                                                                                                .##';;;;;;;;;#+;:::::::::::::::;;::;:;;;#                                    
#           +++++#+:,,,,,,:++;                                                                                            ##;;;;;;;:;;##;:;:::::::::::;::::::;::;:;#                                    
#           :+#:#++:,,:,,.,,:;'++,                                                                     #                +#';;';;;;;;#@+::::;:::;;:::::;;::;:::;:;:;#                                    
#            #++;+;,,,,::,,,,:,,,;+#'``                                                             .#@,              '#';;;;;;;;:;##';:::;:::;;+:::::::::::::;:;::#                                    
#            ##;,,,,,,,,,:::,::::::::''+#.`                                                       :#''#             ;#';;;;;;;;;;;#@;;:::::;;##'::;;:::::::::;;;;::#                                    
#            +#:,,,,,,,,,,:::::;;::;:::;+###,                                                   '#+;;#`           ;#+;:;;;;;;;;;;#'':::;::'##;:;::;;:::::::::;:;;::#`                                   
#            ++,,,,,,,,:::::::::;:,:;:;;;::;'+;                                              `#@#;;;+:          ;##;:;;;;;;;;;;;#;;;::::;##:;;;;:;::::::::::;';;;::+`                                   
#            .#:::,::,,:,,,,:::::::::::;;;:::::+#+                                          +#';;;:+;         .##':;;;;;;;';;;;#;:;::::;#+;:::;::::::::::::+##;::;:+`                                   
#             +:,:,,,::::::::,::,:::;:;;:;;;;:;:;;'#+`                                    :#+;;::;#;         +#+;;;;;:;;;';;';#':;;##;'#;::::;;:::::::::::##;;;:;;:'.                                   
#             ';,:,:::::;,,::;:::::::::::;;::::,::;:;;##,                               '##';::::+;       `'#+:;;;;;;;;;;;;;'#';;+#+#+#;::;:;;:::::::;:;;#+:::::;::'.                                   
#             ,+:::::::,:,:::;:';::::,::::::;;:::::;:::####:                          '##+;;;:;;#+...,:;;#@#;;;;:;;;;;;;;;''#';+#+;'##;::;:;;;::;:;:##;'#';:::;;;::',                                   
#              +:::,:::,:,;##++'++####'::::::::;:::::;::;;;+#####`++,`              ,##+:::;;;'@@######++#+####+';;;;;;;;''@+##;:;''@;::;;;:;::::::;##+#;::::::;;::',                                   
#              +:::::::::++:,,,,,,:;::;+#+;::;:::::,,::::::;;::';+##########'     ,##+;;:::::;'#';;;::;;;;;;';'###+;'';;''@@#':::;;''::;;:;::::::::#'@#;::::;;:;;::;:                                   
#              +;:::::,:#',,,,,,,,;##;,,,,;##';::::::::,,:::::::::;::;;:;::'#@#####;;;:::::;';;'';;:::;;;:;';'';;;+#;:;;:;';:;:;::;+;;;;;:::::::::'+##;::::;:;;;;::;;                                   
#              #',:;::::#,,,,,,,,,,:;+#+:,,,:'+#'::::;;;;::::;::;:::;;;;;;;;;;;;;::;;;:::;;;;;;;;:;;;;;;:;;';:;;:;;'##:::;;;;;;;::'#;;;::;+;:::::'@@@':::::::;;;;::;;                                   
#              #+:::::::#:,,,,,,,,,,,,:'##:,,,:;##::::;;:;;::::::;:::::;;;;;;;;;;;;;;;;;::;;;:;;:;:';;:;;;';:;;;;;;;;##;;:::::;;;''#;:;;;'@;:::;;#@'#;:::::;:;;;;::;'                                   
#              ++::::,::#',,,,,,,,,,,,,,::##:,,,,;+#:,:::;;:::::::::::::;;;;';;:;;;:::;;;;;;;:::;;;###'';';;;;;;;;;::;+#;:;;;;;;;;++;;::'#++;;::+@';#::::::;;:;;;;:;+                                   
#              ;#,:::,;:;#:,,,,,,,,,,,,,:,,;#+:,:,,;##':;:;;;:;;::::::;;;::;:;;';;;;;;;;;;;::::;;:;;;'+####++;;;;;;:;;;+#::;';:;;'#';;;++;'#:::+@;;'+::::::::;;;;;:'#                                   
#              `#,,::,:::,,,,,,,,,,,,,,,###':'#;:::,,;#+::;;;;;;;;:::;:;;::::::;;;;;;:;;;;;;;::;;;;:;;;;;;''###########'@+;;;::;''#;;'#+;:;#:;'@';;+':::::::;:;;;::;#                                   
#               #::::,::::,,,,,,,,,,,,,,:+:+#+'#+::::::+#;::;;;;;;;;;;::;;;;;;;;;::;;;;;;;;::;;;;::::';;:;;;:::::;''';'#@';;;:;;';#'##':;;'#;;@+;;;#;::::;::::;;;;:;#                                   
#               +;,,:,:,,,,,,,,,,,,,,,,,,;+::'#++#:::::::#+::;:;;:;';:;;:;;:;;;';;;;;;;;;;;;;;;;:;;;;;:;;;;::;;:::::;;;;+;;';';;;#@@+;::;;'#;@#';;;#:::::;;:;:;;;:;;#     :                             
#               `+:,:::::,,,,,,,,,,,,,,,,,+::,,;###;;:::::'#;::::;;;::;;;;;;;;'';;;':::;;;;;:'';;';;;;;;;';:;::;;::;';;:;;;;;;;;;##;:;:;;;'##@;;;;'+::::;'#;;:;;::;;#  ,#@+                             
#                #,,::::,,,,,,,,,,,,,,,,,,;#:::::;+###':::::#+:::;;;;;;;';;;';''';;;;;;;;;';;;':;:;;::;;;;:;;;::::;;;;;;'';';;;;';;::;;;;;;@@+;;;;+':::;+##;;;;;;;;;':##                                
#                +::,:::,,,,,,,,,,,,,,,,,,,;+,,:,::'####;::::;#;::::;;;;'''';;'';';:;;;;;;:;;;';';:;;::;:;:;;;;;;:;;;';;';'';;;'';::;;;;;;'@#;;;;:#::;:+#+';;:;;;;;#@+                                  
#                `',:::::,,,,,,,,:,,,,,,:,,,;+,,:,::;#+::;:::::##:::;';;;;;'';';;:;;;;;;;;;;;;;;:;;;::::;';;;:;:::;;;;;;;;'';;;;;::::;;;;;@@;:;;;;#::;'#;#;;;;'';+#+.                                   
#                 #,:::::,,,,,,:,,,:,,,,,,,,,'+,,,,:::##::::::::##::;;;'';';;;;;:;;;;;;;;'''';;:;;;:;:;;';;;::;;;;;:::;';'';;;;;::;;;;;;'+@+;;';;'+:;+#;;+;;;+#@#+;':                                   
#                 +,,:::::';;;::,,,,,,,,,,,,,,#',::::::##::::::::::::;''';;;;;;;;;;;;;:;;';'';:;''::::;;;;:;:;;;;:::''';+##;;;;;;;';';'''@@;:;;';#;;##;;#;;;###@';;+;                                   
#                 `+,,,:::+'+++##':::,+,,,,,,:;++,:;::::#+:::::::;:;;';;;';';;;;;;;;::;'';;':::;;;:::;';;::;;';;;;;;'';'#'';+;;;;'''';;'@+;;;;;;;#'+#';;#:;####';:;+#                                   
#                  +::,:::::::,,:+#+#'##;,,,,'##'+:::::::#'::::::;;;;;;;;;;;:;:;;';;;''';;::::::::::'';;;;:;;:::;;';'';++;'+;';;;';;;;'#@@;;;;;;;#+#;;:'';+@@'#;;:;+#                                   
#                  +::::::::,:,,:,:,:'+##+,,:;+;###:::;::;#;::::;;;;;;;;;;;;;;;;;;;';;;:::;:::;;;:;;';::::;;::;';;;'+';#''#;;'''';:;;'+#'##;:;;;'@#;';;#;;@#;;#;;::'#                                   
#                  :',:::::,,:,,,::,:,::###+::#::###:,::::'#::::;::;;#####;;;;;;;;;;;;;;:::::::::;;:::::;:;;;'';';;;:;'#'#;;;;;;;;;;;+@;;;++;;;:#@'':;;#'@#';#;;;;;;#                                   
#                ,  #::,::,,::,,,,,,,,,:#';##'+',:##+::::::##:;;;:;;;;;:;+#+;;;:;;;;;;;;::::;::;;;;:::::;:';;;;';';;;;'#+;;;;;';;;;;'@;;;;;@':::+';;:;;@@+;;;#;;;;:'#                                   
#               '#  #;::,,,:,::,,:,::,,,:#;:;###,::'#::;:::;+#;:;;;;;;;;;;'#+;;;;';;::::::::;;;;;;::;;;;;'::;;;;;;;'';;'+;;;;;;'';;'#+;;;;;'#;;;';';''#@+:;;+;;;:;;'+                                   
#                #+ :+::::,:,::,,,,:,,,,,:#,::+#':,:::::::;:;#';;;:;;;;';;;;#;;;;::;:;;;:;;;:;;:::;;;;:;;;;;+';;;';;;;;#';;;;;'';;;++;;;;::;#+;;';;;;#@+:;;;#::;;;;;'                                   
#                ##; +::::,,::,::::,,::;::+':,::#+::::::::;;;'#';::;;#####+;'';:;;;;;:;::;;::;:;;;;;::;;;;;'';;';;';;;;;;;''''''+''#;;;;;:;''#';;;''@#';;;;+;:;;;;;';                                   
#                ;++ +;::::,:,:::,::,,:#####::,::#+:;::::;:;;;'#;:::;;;;;'#';';:::;;::;::;:::;;::::;;;:;;;'';;';;;';:;;;';;;'''';'@';;;;;;';''#;;';##;;:;';#;::;;;;@:                                   
#                 #++`#::,,,,:,::,,,,:,;+::,,:,,,:#+:::;:;;;;;;+#;;;;;;::;++;::;;;;;:::::::::;;::::;;::;;'''';;'+;:;;;;''''';;'';++;;;;;;;'';'+#;'#';::;;''+;::;;;;#,                                   
#                 #:+++;,,:,,,,,:,,:::::+':,,,,,,:;#+:;;;;::;;;;#+;:;;::;;:;;:;;::;;;::;;;;;;:::;;;;;;';''';;;;';;:';';'''';;;;;'#;;;;;;;'';;;+##@+;;;;;;;#;;:;;;;;#`                                   
#                 #;:+#+:::::,,,,:,,:::,:#::,,,,::::#+::;:;;:;;;;#';;;;;;;:;;;;;;;;;;;;;;;;;;;::;;;;;;;:';;;;;;;;;;;'';';;;;;';;'+';;;;;'';;''+'@#'::'##+;#;;:;;;;;#`                                   
#                 +'::+#:::,,::;,:,,:,::,;#:,,::::::;#+;;:;';;;:;##;;:::;;;;;:;:;::;;;:::;;;;::;;;;;'';';;;;;::;;;;';;'''';;;;;'@';;;;''';;';';###;;;''+#@+;;;;;;;;@                                    
#                 :#,:;;;:::,,:##::,:,::::++,,:::,:;;;#+:;;;:;;;;;#;::::::;;;;:;:;;;;:::;;;:;:;;;;;:;';;;;::;;';;;;'''''';;;;''+#;;;;;;;;;:;'''@;;#;:;;;'@@#;;;;;;;@                                    
#                  #:,::,,,::,:+#+:,,::::::#:,::::::::;#+;;;;;:;;;#+;;';;;;;;;;:;;;;;:::;;;;;;;;;;;;;';;;;;;;;;;';;;;;;::;;''';@;;;';;;;;;;'''@'';'#;;;;'@;#@;;;;;;@                                    
#                  +'::::,,::::;+++:,:#+:::;#:::::;:::;'#';;;;;;;;;#;;;';;;;;;;;;;;;::;;;;;;;;;;;';;;;;:;:;;;;';;;'';;:;;;''';'#;;''';;;;;;;'#';;;;++';;++';#+;;;;'#                                    
#                  `#,:::,,,,:::#;#'::###+;#+:##::;:;::;'#;:;;::;:;+#;;:;:;;:;;;;;::::;;;:::;;;;;;;;;;:::;;;';;;;;;;;;''''';:;@';;';:;;;;;''@+;;';;'#';;'';;;@;;;;';                                    
#                   #;:::,,:::,:#;;#;:;+:+#+:;#+::::::;;;'#:;;;;;;;;#;;;;;::;;;;;;;::;;:::;;;;;;'';';;;;;;''';;';;;;;;;;';;';##';;;::;;;;''@#;;;;;;';@;''''+###;;;+:                                    
#                   ,#,;::::,:,:#:;;#':+:,:::;#::::::;:::;++;;:;;;::#;;;;::;;;;;;:;;;;;::;;;::;;;;:;::;;;;;;;;;;;;;';;;;';;;'#;';;';'';;''##';';';';''#'#+';;;@';;+;                                    
#                    #::::,::,,:++:::###:::::++;:;:::;;::;'#';:;'::;'#;::;''';':;;;:::;;;:;:::;;';;;;;;;;;;;:;;;;;;;;';;'';;+#;;;;;;;;;;;+@''';;;;;';;#';;:;+''#;;++                                    
#                    '+,:::,:::::#:::,+#::::;#;:::::;::::;'+#;;;;;;;;#:::''';;;:;;;;;;;;;;;:;'';';;;;;;:;';;;;;';;;;;;'';:;:#;;;:;;;;;;''@'';;;;;;;:;;'@;;;###'@';'+                                    
#                    ;#::::::::::+'::,::::::'#:::::;:::::'';#+;;;;';;+';;';;;::;';:;;;';;:';';:;;:;';;;';';;;;';;';;;;;;:;;'#;;::;;;;;'+@';;;;;;;;;::;;+#;;;;;;@''+:                                    
#                     #'::::::::::+::::::::;+':::::::::;;;'''#;;;::::;#;'';;;:;;;;;;:;;;::;;;;;:;:;':;;;:;;;;;;;;;::::;;;;'#+;;;;;';;;;'+;;;;;;;:;::;;;'#;;;;;;;;;#`                                    
#                     ##:::::,::::#,:::,:::;#;::::;;:;;:';;;;'+;;;:;;'+''::::;;:::;;;;:;;;;;;;;;;;;;;:;';';::;;;;:;::;';;+;#';';;';;;;:;;;;:::;;:;;:;;;;'#;;;;;'';#                                     
#                      #+::;::::::+;:;:::::++:::::::;;;;;:;:;;#;:::;;;;#;:::;;::::::::;;;;;;;;;;:;;;::;;';;;;;;;;:::;;;;;'#';;;;;;;;';;;;;;';';;:;;;;;;;;+';;;;;;;@                                     
#                       #,:::::::;:#::;:::;+;:::::::;;;;;;:;;;;#;:;;';'+'::;:;;:;;::;;';';;;';;:;;;;;;;;::::;;;;;;;;';';;'#;;;;;;;;::;;;;;;;;;::;;;;;;;;';#;'';;;;#                                     
#                       +':::::::::'';;;::;#::::::;::;;;;;:;;;;+':;;;;;+';;;:::;;:;';'';;;;;::;::;;;:;;:::;;;;;;;;;;;;;;;#+;:;;;;:::;;':;;::;;:;';:;;;;;;;'#';;;;;#                                     
#                        #::::::::::#:;::;#':::::;;;;;;::::;;;;'#'';;';;#;;;::;;::;;';;';;;;;;;;;';:;;::;::;;;;;;;;';:::;@'';':;;;;;';;;;;;:;;;;;::;;;:;;:'#';;''''                                     
#                        #':;:::::::#::::;+::::::;;;;:;:::::;;;'#':;;;;'#';:::;;;;;;;;;::;:;';;;;;;;;;;;;;;;;;;;';';';;;'';;;;;;;;;:';;;;;;;;;;;;::;;:;;;;;;@';''+.                                     
#                        :#::::::::::#::;+':::::;;;::;;::::;;;;;+#;;;;;;@':;;;';;;;;;;;;';:;;;;;;;:;;;;';;;;;;;;;;'';;;;;;;;;:;;;;;;;;;;;;;;;;;;:;;;;;;;;;;''#;;;#                                      
#                         #;:::::::::#;:'#::,:;:;;;:::::;:::::;;;#+;;;;;;;;;;;;;:;'';;;;';:;;;;;;;::;;;;;;;;::;;'';;;'';::;;;';;;';;;;;;;;;:::::;;:;:;;;;;;;;'+''@                                      
#                         :#:::::::::'#:+;:::::;;;;:::::;:::;;';;'#;:;:;::;';;;::'';;;;;::;;;:;::::;;;;;:;;;;;;;;;;;;;:;;;;;;;;';;;;;;;;::;;:;::;;;;;;;;;;;;;'@''@                                      
#                          #;:::::::::;;+::;::;;;::::::;::;:;;;;;;@';;;;;;;';';'';;;;;;;;::;;:::::;;:;:::;;;;'';';;:::;;;;;'';;;''####';;;;;::;;;;;;;';;;;;;;;+#+'                                      
#                          :+::::::::::+':::;:;;::::::;::;:;;;:;;;;;:::;;;;;;'';;;;;;;;;:;;;:;::;;;;;::;;';';'';;;;;';;';;;'';#@@@@@@@@@#;;;;;;;;;';;';;;;;;;;'+@`                                      
#                          `#:::::::::;#:::;;:;::;::::;::::;;:;;;;;;;;:;;:;;;';;';;:;;;;:;;;;;;;;;;;:;;;;'';''';;;;;;;;;;;;;#@@@@@@@@@@@@@#;;;;;':;;;;;;;;';;';'@`                                      
#                           :;::::::::'+::;::;;:;::;:;;:;:'::;::;;;:::';''''';';;;::;;;';::;::;;:;::;;;;';;;;;'';;;;;;;:;;'@@@@@@@@+::::@@@@'';'';;;;;;;;;;;;';''@                                      
#                           `#::::;:::+'::;:;;:;;:;:;;;:;;;::::;;;:::;;;;;';;;::;;;;;+':::;;:;;::::;;;;;';;';;;;;;;';;;;''@@@@@@@+:::,,::@@@@;;'';;;;;;';;;;;;;''@,                                     
#                            #::;:::::#;::;;;:;;::::;:;;;;::;;;;;;::;;';;;;;;;;;#@@@@@@@#+;;::::::;;';;;;;;;;;;;;;;;;;;;;@@@@@@#::,::,,,:@@@@@'''';;;;';;;;;;'''''@                                     
#                            `+:::;;::#::;:;;::::::;::;;::;:;;;;;;:;';;:;;;;;+@@@@@@@@@@@@@#';:::::;;;;;;:;;;;;;';;;;;;;@@@@@@@::::::::::##@@@@''';;;;;:;';;;'''''##                                    
#                             +;:::::++::::::::;::;;:;;;::;::;;;;;;;;;:;;;;'@@@@@@@@@@@@@@@@@#;::;;;';;;::;;;;:;;;;';;;'@@@@@;@:,,:::::::+#'@@@#'''';;;;;;;;''';+''@                                    
#                             '#::;:;#:::;;:::::;;;;:;::;:;:;;;;;;'';;;;;;#@@@@@@@@@@@@@@@@@@@@'';;;;;;;::;;';;';';;;;;@@@@@;:@::::::::::+#:+@@@#''';;;;;;;;;''''''##                                   
#                              #+:::;#:::;:;::::;;::;:::;:;;;;;;;;;;;;;;;#@@@@@@@@####+@##@@@@@@';;;;;::;;;;';;';;;;;;;@@@@'::@::::::::::'#::@@@@+'';;;;;;;'';''''''++                                  
#                               #'::++:;;::::::::::;;::;::;;;;;;;:;::;:;#@@@@@@@#;::::::#;#@@@@@@::;:;:;:;;;;;;;;;;;;;#@@@@::;#::::::::::#+:;@@@@@'';;;;;;;'''''''''+#,                                 
#                               .#':#;:;::;;;;:;:;;::;:::;;:;;:;;;::;;;+@@@@@@+,,,,,,,,,#::#@@@@@#:;:;;;::;;:;;;;:;;;'@@@@+::'#:::::::::;@:::@@@@@''';;;;;'''@''''''''@                                 
#                                `@@+:::;:::;::;:;;:;:::;;;;;;;;;;;;;;;@@@@@@;,,,,,,,,,,#;,:#+@@@@+;;;;;:;;;:';;;:;;;'@@@@:::'#:::::::::#+:::@@@@++'';;;;'';'+@@+';'+'+#                                
#                                  #:::;::::::;;;;::::;;;;;;;;;;;:::;;+@@@@@:,,,,,,,,,,:'+,:++#@@@@;::;:;;;::;:;;:;';+@@@+:::;@:::::::;@@@@#:#++''''';;;;''';'@'@#'''''#.                               
#                                 .#::;:::::';;:::::;;;;;;;;;;;;;::::;@@@@@;,,,,,,,,,,,,;#,::#;@@@@#;;:;;;::;;;;;:;';@@@@;:::'@#::::;###;;;#@##::''';;;;''';;;#: +@'+'';@                               
#                                 #'::;;:::;;;;:;:::;;;:;;;;;;;;;:;;;@@@@##,,,,,,,,,,,,,:#,,:++'@@@#;;::;:;;;;;;;;;;'@@@@::::;@@@@#@#+;:::::;@@::;''';;'''';;;+@  `@+'';++                              
#                                 #::;:::;;;:;;;:::;:::;;;;;;;:;;;;;+@@@@@#,,,,,,,,,,,,:+',,:;#:@@;;;;:;:;';;;;;;;;''#@#@::::;#:;@##;#@@@#;::#@::;''';;'''';;;;@    #+;''@                              
#                                +':;::,:;;;;';;;::;::;;;:;;;;;;;;;;@@@@@@#,,,,,,,,,,,::#:,,,:#:;';;;;::;;:;;;;;;;;;''';:::::;#;##:;@#;';'#;:;@::;''';'';';;;''#,    #+;''@                             
#                                #::::,:;;:;:;;;;;;::::;;;;;;;;;;;:;@@@@@#@:,,,,,,,,:,;@#;::::+':;;;;;;:;;;:;;;;;;';;';;::::::@+@:;@#:::::;@;;@:::''';'';';;;;'+#     #+;;#.                            
#                               ;#;;;::::;;;;:;;;;::;;;;;;';:;;;;;:;@@@@####:,,:,,,,;#@#####+::#:;;;;;;;;;:::;;;;'';';'';:::::@@':;@'::::::+';@;:;;''''';';'''++@      #+'+#                            
#                               #;;;:::;::::;;::;:;;;;;;;;';;;;;;;:'@@@@'#:##;:::;#@@#;::::;+##@:;;:;:;:;;;';;;;;;;;';;;';::::#@;::@+::::::'#;@:::''''''';;'''''@.      #+'+.                           
#                              .#:;:::;;::::;;;;:;:;::::;;;;;;;;;;;#@@@@:#:,;#####@;::::::::::+@:;;;;;:;;;;;:;;;''';;';;';::::;@;;;##::::::#+'@:::'+'''';'''';'+##       @+'@                           
#                              #;::::;;::::;;;;::;:;:::;;;;;;;;;;;;@@@@#:#::,:::'#::::::::::::;@:';;;;;;;:;:;;;'';;;';;''':::::#+;;;#@;:::;@;'@:::;+''';;;;'';'++@        @'#,                          
#                             .#:::;':;::::::::::;;:::;;;:;;;;;;';'@@@@+:#;,,::;#:::::::::::::;@:;;;;::;;::;;;;';;;;;;;;;;;::::;#;;:;+@@@@@;;+#::;;'''';;;;''''+'@         #+@                          
#                             #;;;;;';:;:::;;;:::::::;::;:;;;;;;;''@@@@+:#'::::#:::::@#';::::::@:';;::;;;::;;;;;;;;;;;;;;;;;::::+#::::;;';;;;##::;'++'';;;;''''''@,         #@:                         
#                            :#::':;;;;::::;;;:;::::::;;;:;;;;;;'''@@@@':+#:::#+::::##+'##;::::@;;';;;;;;:;;;;;;;;;;;;;;;;;;:::::##::::;;;;;;@'::;'+'';;;;''''+''##          #@                         
#                            #';:::;;:::::;;::;;:;:::;;;;;;;;;;;'''@@@@#:'#::'#:::::#:::::#:::;@:';;;;:;:;;;;;';;;;;;;;;''';;::::;##';:;;;;;#@:::#'''';''''''''';'@           @+                        
#                           ;#;'##;;;::::;;::;;;;;::;;:;;;;;;;;;'+'@@+;:::@::#;::::;#:::::#:::;@:'';;;::;;;;'';'';;;;;;;;;'';;:::::;#@#;;:;#@:::@@''''''''''''';''@           ,@                        
#                           #;+###';::::;;::;:;;::::;;::;:;;:;;;''''''::::+##+::::::#::::#::::'#:';';::;;';';;;;;;;;;;;;;;;'';:::::::;#@@@@#::+@+''''+''''''++''+#@            '`                       
#                          ##:#.#+;::::;::;;:;;::;:::::;;:;;;;;''''++';::::@@:::::::;#++#;::::#':';;;;;;;;;;;;;;;;;;;;;;;;;'';;:::::::::::::;@@;'''+'+'''''+''';'@@.                                    
#                          #;#; #:;::::':::;:;;::;:::;;::;;;;';;''+''':::::+@:::::::::';:::::'@::';;;;;;;;;';;;;;;;';;;;;;';';;;::::::::::'#@';;'+''''''''++'';'+@@;                                    
#                         +##+ ++:::::;;:::::;;::;:;;;;:;;;;;;;;;'''++;:::::@;:::::::::::::;;#+::;;;;;;;'''';;;;;;;;;;;;;;''''#+:::::::'#@#+;;;'''''+''';'+''''+#@@+                                    
#                         #+#  #;:;:;:;::;::;;::;;:::::;;;;'';;;;'''''+:::::+#::::::::::::::+#:::';;;;;;';'';';';;;;;;;;;;;'''#@@@@@@@@#;;;'''''';''+'''+'+''++'@@@#                                    
#                        +##  .#:::;;;:::::;;;;:;;;:;;;;;';;;;:;;';''''':::::;#+:::::::::::##:::;';;;;;;';''''''';';;;;;;;;'++;;';+'+;;;;'''';'+;'''''''++++''''@@@#                                    
#                        ##   ;'::::;::::::;:;;;;;;;;;;;';;;;:;;;;;''''';::::::+#+':::::;+#;::,:;;;;:;;;'''''''';';'+'';;;;;''';;;;;;;';'';'';;;''''''''+'''''''@#@@                                    
#                       +#    #::;:::::::::;:;;:;;::;;;;;;;:;;;;;;;'''''';::::,,:'+######':::,:@+;;;;'''''''+';'@@@@@@#';;';';;;;;';''''';;;;;;;'''''+''++'+''+'@##@                                    
#                       #:    #:::;::@#::;;::;;;;;:;;';;;;;;;;;;;;;;''''':::::,::::::::::::::;@+;;;;;;'++'';;;;@@@@@@@@+;;;;;';;'';''';;;;';;;'''+++''''@++';''+@@#@                                    
#                      @#     #::;::'##;::;:;'::;::;;:;;:;;;;;;;;';;+++''@'::::::::::::,:::'##;;;;;;;;;;;'';';'@@@@@@@@#';''''''';';;;;;;;;''+''+++''+'#@#'''''#@@+@                                    
#                      `      #:;;;:###:::::;;;;;:;;;;;:;;;;;;;;;;;'''''''@;:::::::::::+##@+'';;;;;;;;;';';';'''@@@@@@@''';'';''''''+;';''''';'+++'';'+@`@';;''@+@#@                                    
#                             #:;:::# #,:::;;:;;;;;;;;;;;;;;;;;;:;''';';;'+@#+';::;+##@+';';';;;;;;;;;;';;;;;;;''';++'';'';';';;'';''''+''''''+'++''''## @';+''@+@#@     `..`                           
#                             #:::::# #,,:;:;;;;';;;;;;;;;;;;;;::;;;;;;;;;;;'+#####';;'';;;;;;:;::;::;;;;;;;;;;;;''''''';;;';;;;;;';'++'+'''''''+''''+@+,@++##@@#@@@#@@#+';'##@@@@;`                    
#                             #::;::# #::::;;;;;;;';:;;;;;::::;;;::;;:;;;';:::;::::;;;;';;;;;::;:;;:;;;;;;;;;'''';';;''';''';'';;;'++'''+++###@@@####@###@@@#+#+,@@#              ,#@@#.                
#                             #:;:::# +':::;;;;;;;;:::;:;:;;';;;:;;:;;;;;';:::::;;;;;;;;;;;;;:;;;;;:;;;;;;;;';;;;;;;'';';;;';;;'''''++##@@#'''''+'''#@   ,#'++@. @@.                   ;@@              
#                             #;;::;# :+::;;;:;;;;;:;:;;;:;;;;:;;;:::;;;:;;::;;;;;;;;;;;;;;:;;;;;;;;;;';;'';';;;;;;';;;;;;''''''+#@@##+;';;;'+'''''+@.   `#'''@  @@                     ,`              
#                             #;::::# .#;;;:;::;;::;:;;;;:;;;;;;:;:;:;;;:;;;;;;;;;;;;;;;;;;;;;;;;';;;';;;;;;;;;;;;'';;;'''''++##@#';'';;;''''+'@@+#@+     #+''@  @@                                     
#                             ''::::#  #:;;;;::;;:;;;;;;;:;;;;;;;;::::;;;;;''';;;;;;;;;;;:;;;;';;;;;;;;;;;'';;;;;'';;'''''''+@@''+''';';;;;;'+@#@'@#      @''+@  @@                                     
#                             .':;;:#  #;;;;:;:;;:;:;;;';:;;;;;;;;;::::;;;;;;:;;:::;;;';;;;;;;;;';;;;;;;;;;';;;;';;;''';''@@#''''';'';;;;;''+## @@@       @+'#:  @                                      
#                              #;:::#  #::;:;;;:;;;:;;;;;;;;;;:;::;;;;;';;;;;;;;;;;;;;;;'';;;;;;;;;;;;;;;;;;;;;;;;''+';''';';';;;';;;;;''+++#@@@@@@@@@@@@@@@@@@+,`                                      
#                              #:;::#  #;:;;;;;::':;;;;;;;;:;;;;:;;;';;;;::;;;;:;;;;;';';;';;;;;;;;'+#+;;;;;;;;;'''''''';;;;;'';+#@####+++++@.           '@#@;,``:+@@@#'                                
#                              #:;::#  '';;;:::;;;;;;;;;;';;;;;;';;;;;:;:;';;;;;;;;'';''';;;'#####@@#';;;''''+''+'''';';';;'';'@@'+';''+'''@`            #@@`          .+#@@.                           
#                              #;;::#  .+:;::;;;;;;;;;;;';;;;;;;';;;;;;;;';;;;;'+'''''+#####';;;;';;;;;;;'';;;'+''';;;';'';;;;;'''';';;'''@.                                +@+`                        
#                              #;::;#   #:;;:;::;;;;';;';;;;;;;;';;';;:;'''''''+##@@#+';;;;;;';;;'';;;;'+';;''';;;'';'''';;;;';;'''';';;'@.                                    :@#                      
#                              #;::;+   #:;:::;;::;;;;;;;:;;'';;;;;';;;+;'++#@###';;;;;;;;;;;'+@@@#;';'';';''''''''';;;;;;;;;''@@@##';;;+`                                        @#                    
#                              ,'::;+   #;;;:;:;:;;;;';::;;;;;;;;;'';';#####''';;;;;'';;;+###'''+''''''+'''+';';;';;''';;;;';;;;''';+#@@@#;.                                       `@#`                 
#                               #:;;+   ;+;;:;;;;;:;;';;;';;;;;;';'+####''';;;;';;;;';+##';'';;;;;';;'+;;;;';'''''+#@@@@;';;;;;;;;;';;;@  .:+@@'`                                     ;@.               
#                               #;;;+   `#;::;;;;;;'@';;;;;;;;;'+##';;;''';;;;;;;'+@##';;';;;';+''';';'''';;'''''@@+;''@';;;;;;;;;;;;;@         ,#@#:`                                                  
#                               ;;:;+`   #;:::;;;;;#@#;;;;';;+##';;;;;';'';;;;'+@#;;';;''';;'''';'''+'';'''''''+@#'';;'@#;;;;;;';'';;#               ;#@+`                                              
#                                #:;+`   #';;;;;;;'#@#;;:;+###'';;';';;;;;:;'##;;;;;;;;''''''';#@@'''';;';;;''+@'';;;;;;;;;;;;;;;;';+,                   ;@@;                                           
#                                #;;#.   ,#;;;;;;;;+::#+###;;;;;:;:;';;;;:+#+;;;;;;;;;;;;;''#@@#+';;'';;''';;;;';;;;;;;;;;;;;:;;;;;';                       `+#'                                        
#                                ;+;';    #:;;;;;';'#@@@';;;:'::::;'';';+#+'+''''';';;''+'##'+''';;;';'''';;;;;;;;;;:;;;;;;';;;;;;'@                           `##,                                     
#                                 #;;#    #';;;;;'@@#` ##:';;;;:;;;;''+#+''';;;;;';;;''''#'';''';;;;''''';'';;;;;;;;;;;;:;;;:;;;;;@@                              ;@+                                   
#                                 ;+;#   +##;;'###'+#   +#;;;;;;;;;'##+'''';;;;'';;';';##'''''';;;;'''''';;:;;;;;;:;;';;;;;;;;;;;+@@                                .@'                                 
#                                  ###   @@#;###';''#    .#':;;:;+@#@#;;''''';;;;'''';@+'';;';';;'''';''';;;;;:;;;;;;;;;;;;;;;;'+@@@                                  .@;                               
#                                   `   @@@@@#+'';;'#`     ##;:'#+;;@@##''';';'';';;+@'';;;;''';;'''';;';;;';:;;;;;;;;;;;;;;;;'@@@@@                                    ,@`                             
#                                     +@###@@';';;;;#;  .   `@@#;;';'## ##;;;;'''';##;;;;'''';+';;'';'';;;;''';';;;;;;;;;;#@##;,@@@@                                      ##                            
#                                    @##@@@@+@';;;:;'#  ..  #;.##+';''## `##''''''@@+'''';;;;;'''';';;;';;;;;;;;;:;;;;;;##,.....@@@@                                       `@:                          
#                                  `##@@@@@+.@+;;;;;+# `..;#    `#@+;'+##  .#@'++#;'@@+'';;;'''@@#'''''';;;;:::::;;;;;'#`  `....@@@@                                         +#                         
#                                ,##@@@@@@@..,#;;;;;'#,..#;       `#@#;'@#   .#@@;;''@@#;;';''''+@@#+'@@@#;;;;;;;;;;;+#     ....@@@@                                          ,@`                       
#                              '#.@@@@@@#:,...+#;;;'''#,#...         ;@@#@#...#,#@#''+@@@#''''''''+@@@@; ;@#;;;;;;;'@#      ....@@@@                  ,#@@@@@#.  ,@@@@:        :@`                      
#                            '#. @@@@@;........##;';;;@#....`          .,+@#,@..,::@###@#;@@@+';;;''+@@+   '@@@#+#@#`       `...@@@@               .@@@@@@@@@@@@@@@@@@@@#       `                       
#                          +#'  #@@@@.........  ##;;+##..'...        `.....'#@@@@@@@@@@@@'..;@@@+++';;+@@      ,:            ...@@@@             :@@@@@@@@@@@@@@@@@@@@@@@@#                             
#                        ;##   ,@@@@..........   #+#';#'.@...       .....:@@@@@@@@@@@@@@@@@'..` .'#@@@@#`                    ...@@@@           `@@@@@@@@@@@@@@@@@@@@@@@@@@@@                            
#                      ,##`    @@@@...........   #@#:;'#.@'..`     `....##@@@@@@@@@@@@@@@@@@@;..                             ...@@@@          +@@@@@@@+.     `@@@@@@@@@@@@@@@.                          
#                    .##`     @@@@'......`   ` ,#  :##+#+@@...     ...,##@@@@@@@@@@@@@@@@@@@@@@..`                           ...@@@@         @@@@@@@'.        `@@@@@@@@@@@@@@@`                         
#                   ##`      :@@@@......      +'     +@##@@...........#@@@@@@@@@@@@@@@@@@@@@@@@@..`                          ...@@@@        @@@@@@@..          .@@@@@..;@@@@@@@                         
#                 ;#:        @@@@:.....      #,      ..,+@@,........:#@@@@@@@@#:.....,#@@@@@@@@@@..`                         `..#@@@@@@@@@@@@@@@@#..           .'@@@@....+@@@@@@                        
#               `#;         #@@@@.....`     #.       ...@@@+'+#####+#@@@@@@;.............#@@@@@@@@..                         `..#@@@@@@@@@@@@@@@#...           ..@@@@:....:@@@@@+                       
#              '+           @@@@+.....    .@`       `...@@@@@@@@@@##@@@@@#.................@@@@@@@@..                        `..'@@@@@@@@@@@@@@@....           ..@@@@+.....'@@@@@                       
#             #'           #@@@@.....`   +#         ....@@@@@@@@@#@@@@@@#...................@@@@@@@+..                       `..;@@@@@@@@@@@@@@.....           ..@@@@@......@@@@@@                      
#           `#.            @@@@@.....   #+          ....@@@@@@@@#@@@@@@@.......          ....#@@@@@@..`                      `..:@@@@@@@@@@@@@@......          ..@@@@@.. ....@@@@@                      
#          +#             ;@@@@+.....  #,           ....@@@@@@@#@@@@@@@......             ....@@@@@@#..                      `..,@@@@;,,..............        ...@@@@@..  ...@@@@@#                     
#         ##              @@@@@..... `#`            ....;:,...#..,:'#@;.....               ....@@@@@@..`                     `...@@@@+..............:..      ....@@@@@..  ...,@@@@@                     
#                        `@@@@@.....`#             `.........#,............                 ...,@@@@@'..                     `...@@@@@..............@,...   ....,@@@@+..   ...@@@@@`                    
#                        #@@@@@....,#              .........+:............                  ....@@@@@@..                     ....@@@@@....``     ...@@,.........@@@@@...   ...#@@@@#                    
#                        @@@@@'...:@               ..`     +;    `.......                    ...:@@@@@..                     ....@@@@@....        ..+@@'.......;@@@@@...   ....@@@@@                    
#                        @@@@@...'#`               `      :#        `...`                    ....@@@@@'.`                    ....@@@@@....        ...@@@@.....#@@@@@+...   `...@@@@@                    
#                       '@@@@@...#.`                      #           ..                      ...@@@@@@..                    ....@@@@@....         ..@@@@@@@@@@@@@@@...`    ...@@@@@                    
#                       @@@@@@.....`                     #                                    ...#@@@@@..                    ....@@@@@,...`        ...@@@@@@@@@@@@@....     ...@@@@@                    
#                       @@@@@@.....`                    #                                     ...'@@@@@..                    ....+@@@@'....         ...@@@@@@@@@@+.....     ...@@@@@                    
#                       @@@@@@.....`                   +`                                     ...:@@@@@..                    ....;@@@@#....         `...:@@@@@+.......      ...@@@@@                    
#                       @@@@@@......                  ',                                      ...:@@@@@,.                    ....,@@@@@....          `..............`      `...@@@@@                    
#                       @@@@@@@......                :;                                       ...:@@@@@:.                    .....@@@@@....`           ...........`        ....@@@@@                    
#                      :@@@@@@@#......              ,#                                        ...;@@@@@:.                    .....@@@@@.....             `.....`           ...'@@@@,                    
#                      @@@@@@@@@@......`           `#                                         ...#@@@@@,.                    .....@@@@@.....      ..`                     ....@@@@@                     
#                     ,@@@@@@@@@@@........         @`                                         ...@@@@@@..                    .....@@@@@.....`  ......`                    ...,@@@@@                     
#                     @@@@@+@@@@@@@#.........     #;                                          ...@@@@@@.                     .....@@@@@:...............                  ....@@@@@`                     
#                    .@@@@@..@@@@@@@@;...........`                   `                       ....@@@@@@.                     .....+@@@@+................               `....#@@@@@                      
#                    @@@@@@...#@@@@@@@@@:..............`          `...                       ...@@@@@@+.                     .....:@@@@@...........;@.....            .....:@@@@@:                      
#                   .@@@@@......@@@@@@@@@@@+,.........................                      ....@@@@@@.                      ......@@@@@.......,+@@@@@'.....        ......,@@@@@@                       
#                   @@@@@@.......,@@@@@@@@@@@@@#;......................                    ....@@@@@@@.                      `.....@@@@@@@@@@@@@@@@@@@@@.................:@@@@@@.                       
#                  ,@@@@@:..........#@@@@@@@@@@@@@@@@'..................                  ....#@@@@@@.                       `.....@@@@@@@@@@@@@@@@@@@@@@#..............#@@@@@@@                        
#                  @@@@@@..............#@@@@@@@@@@@@@@@@@@@@@@@@@@@......`              .....#@@@@@@,.                        .....@@@@@@@@@@@@@@@@@@@@@@@@@:.......:#@@@@@@@@@                         
#                 ;@@@@@+.................:@@@@@@@@@@@@@@@@@@@@@@@@@#.......         `......@@@@@@@'.                         .....#@@@@@@@@@@@@@@.  .@@@@@@@@@@@@@@@@@@@@@@@@                          
#                 @@@@@@......................:#@@@@@@@@@@@@@@@@@@@@@@#..................,@@@@@@@@'.                          .....'@@@@@@@@#;`        +@@@@@@@@@@@@@@@@@@@@+                           
#                '@@@@@@.......... ................,'#@@@@@@@@@##@@@@@@@@#,..........,+@@@@@@@@@@:.                           .....,@@@@@                ;@@@@@@@@@@@@@@@@;                             
#                @@@@@@..........    .............................,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..                            ......@@@@@                   `'@@@@@@@+,`                                
#               #@@@@@@..........        `..........................;@@@@@@@@@@@@@@@@@@@@@@@@@+.`                             ......@@@@@:                                                              
#               @@@@@@:..........                ```````````     `....@@@@@@@@@@@@@@@@@@@@@@@..                                .....@@@@@#                                                              
#              @@@@@@@..........`                                  .....@@@@@@@@@@@@@@@@@@#..                                  .....@@@@@@                                                              
#             `@@@@@@+...........                                   `.....,#@@@@@@@@@@#;...                                    .....'@@@@@                                                              
#             @@@@@@@............                                     `.................`                                      .....,@@@@@