*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,::,:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;:::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*::::::::::::::::::::::::::::::::::::::;;;;;:;::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::;;::;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::;::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;:;;:::::::::::::::;;;;:;;;;::;;;:;::;:::::;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::;;;;;;:;;;;;;;;:::;:::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;:
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:,,:::::,:::::::::::::::::::::::::::,,,,,,:::::::.**:,:::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::;;::,,,,,,::::::+*+++;::;,,:::,..,,,,,,,,,,::::,,,,,,,,,,,::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::##+;;*.;:,*+***.:;:::,::;++++;;*#;::::::,,,,,,,,,,,,,,,,,,,::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::###+###*****###*##+*+:::::::::::::::::::,,,,,,,:::,,,,,,:,,,::::,,:::
+::::::::::::::::::::::::::::::::::::::::::::::::::##:::##:+***###***:::::::::::::::::,,::::,,,,,::,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::##:::::::##:::::::::::::::::::::::::,.......,.,,,,,,,,,,,,,,,...
+::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:::::::::;;:::::::::::::::::::::::::::...........,,,,,,,,,,,,.
+::::::::::::::::::::::::::::::::::::;;;::::::::;::;;;:;;;;;;;;;;;::::::::::::::::::::::::::::::::::,:,,,,,,,.,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,:,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::,,:::::,:::,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::,,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,::::::::::::::::::::::::::::::::::::::::::::::
;...,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::
;          ........,,,,,,,,,,,,,,,,,,,,,,:::::::::::,,,,,,,..,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
+.. .  .......        ...     ..........,,,,,,,,,,,,,,.............,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+.      .. ......,........... ....... .......     ............  ....,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::
;.... ....... ........,...   ...................        ..........,,,,,,,,,,,,,,,,,,,,,,.,,,,::::::::::::::::::::::::::
;..    ..........      ....   .......,. .......  ... .......,,,,,,,,,,,,,,,..,,,,,,,,,,,,,,,...,,,:::::::::::::::::::::
;   ......   ...................       ... ........ ...,.,,,,..,,,,,,,...........    ...........,,,,::::,,,,,,,,,,,,..,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,::,:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::::::::::::::::::::::::::
+::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;::;;:;::;
+:::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::;;;;:;:::::::::::::::::::::::::::::::::::::::::::::::::;::;:;::;;;;;;;;;;;;;;
+:::::::::;;;;;;;::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;::::::::::::::::::::::::::;;;;:;;;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;::::::::::::;:;;;;;;;;;;;;;:::::::;;:;::;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::;;;::::;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,::::,:::::::::::::::::::::::::::,,,,,,::::::;*+:::::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::
+::,::::::::::::::::::::::::::::::::::;;;::::,,,,,:::::+*+++;;:+,,,:::,...,,,,,,,,,:,:;,,,,,,,,,,,:::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::###*;:#;;;++****;:::;,.++++;;+*##+::::,:::,,,,,,,,,,,,,,,,,,,:::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::########****###*##;;::::::::::::::::::::::,,,,,,,:,,,,,,,,:,,::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::#:::*;#:;***##+##::::::::::::::::::,:,,:::,,,,,:::,,,,,,,,,,,:,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::##:::::::#+:::::::::::::::::::::::::::,......,,,,,,,,,,,,,:,,,,.
+::::::::::::::::::::::;::::::::::::::::::::::::::::::;:;:;;;;;;;:;:;:::::::::::::::::::::::::::,...........,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::;;:::::;:;;::;;;:;;;;;;;;;;;;::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::::::::::::::::::::::::::::::,,,,,.,,,,,,,,::,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::,,,::::::::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::,,,:
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::
+...,.,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::
+..          .......,,,,,,,,,,,,,,,,,,,,,,,:,,:::::::,,,,,.,,.,,.,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::
;.....   ......         ......  ........,,,,,,,,,,,,,,,,............,,,,,,,,:,::::::::::::::::::::::::;;:::::::::::::::
; ,.      ........,,.........   ..............     ........... . .....,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::
;............. ........,,...   ..................        ...........,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::
; ...   ...........     .....  .......... .......  ...........,,,.,,,,,,,,,,,.,,,,,,,,,,,,,,,...,,,,:::::::::::::::::::
;    .......  ....................       ...........  ..,.,,,..,,,,,,,,,...........    ...........,,,:::::,,,,:,,,,,,,.
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::,,:,:::::::::::::::::::::::::::::;:::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::;:;:;;::::;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::;:::::::::::::::::::::::::::::::::::;;:;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+::::::::::::;::::::::::;:;;::;;:;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::;:;::;:::::::::::::::;;::;;;:::;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;::;:::::::::::::;:;;;:::;:;;;;;;::::::;::::::::;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::;;;:;;;:;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,:,,:::,:,:::::::::::::::::::::::::::,,,:,,::::,:;:::::+::::::::::::::,,:::::::::::,:::::::::::::::::::::::::::
+::,,,::::::::::::::::::::::::::::::::;;;:,::::,,,,,::+**+++;::;,,,,,:::,...,,,,,,,:+;:::,,,,,,,,,,,:::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,##**#*;;;+ ****,;+;+#.+;;:+####;,,,:::,,:::,,,,,,,,,,,,,,,,,,,:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::*##**###*###*######;::::::::::::::::::::::::,,,,,,,,:,,,,,,,:::,::::,:
+:::::::::::::::::::::::::::::::::::::::::::::::::++:::#:#::#**##:#*::::::::::::::::::::,,,::::,,,,,,::,,,,,,,,,,,:,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::;#:::::::##:::::::::::::::::::::::::::::,.......,.,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;:;;;;;;;::::::::::::::::::::::::::::,..........,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::;::::;:;::::;;;;;;;;;::::::::::::::::::::::::::::::::::::,:,,.,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::::::::::::::::::::::::,,.,,,,,,,,,,,:
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::,,,::::,:::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::::::::::::::::::::::::::::::::::,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,:::::::::::::::::::::::::::::::::::::::::::
+,,.,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::
+...          .......,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::,,,,,,,,,.,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::
;..... .  .......      .  ... .  .........,,,,,,,,,,,,,,,.............,,,,,,,,,,::::::::::::::::::::::::;:;;:::::::::::
;  ...      ........,.  ......   ....... . .....     ............. .....,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
;   ....  .....   .......,...   ...................        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::
+.  ..    ......,. .      ....   ......... ........ ... ........,,,.,,,,,,,,,,..,,,,,,,,,,,,,,,...,,,,:::::::::::::::::
;      .......   ............. ....       ......... ..  ..,.,,,..,,,,,,,,,..........     ..........,,,,:::::,,,::,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::,,,,,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,,:::::::::::::::::::::::::::;::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;:;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;::::::::::;:;:;;:;;::;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::;:;:::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;;;;
+:::::::::::::::;:::::::::::::;:;;:;:::;;;;;;;;;;;;;;;;;;;;:;:::::::::::::;::::::::::::::::::;::;;:::;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::;;;::::;;;;;;;;;;;;;;;;;;;;;;;::::::::;::::::::;:;;;;;;;;;:;;;::::;:;::;:;:::::;:;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::;;;;:;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::;;:;;:;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::: ,.:::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,:,,,::,,,,::::::::::::::::::::::::::,,,:,,:,::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::,,::::::::::::::::::::::::::::::::;;;:::::::,,,,,+**+*+;:::::,,,,,:::,..,,,,;+;;:,::::,,,,,,,,,,,:::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::#:*####;:;; ;***+ ;;;*#,;+######::::,,,::::::::,,,,,,,,,,,,,,,,,,,:::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::###:**#####*#######:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,:,,:::::
+:::::::::::::::::::::::::::::::::::::::::::::::::;::::;::::###+::*:::::::::::::::::::::::,,,::::,,,,,:::,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::##:::::::##::::::::::::::::::::::::::::::::......,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::;;;;;;;;;:::::::::::::::::::::::::::::,..........,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::;;;::::::::;:;::::::::;;;;;;;;:::::::::::::::::::::::::::::::::::,,,.,,,,,,.,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::,,,,:::::,::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::,,:::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::
;.....          .......,,,,,,,,,,,,,,,,,,,,,,,,::::::::::,,,,,.,,.,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::
;  ..... .  .......         .....  .........,,,,,,,,,,,,,,,..............,,,,,,,,::::::::::::::::::::::::;;;;::::::::::
;.   ...      ........,. .......   ....... .......     ............. .....,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
;.    ....  .....   ...........   ...................        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::
; ..   . .  ......,...      ....   .......,. ........ ... ........,,,.,,,,,,,,,,.,,,,,,,,:,,,,,,,...,,,,:::::::::::::::
;        .......   ........... . ....   .    .  ..... .   ..,.,,...,,,,,,,,,..........     ..........,,,,:::::,,:::,,,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::,,,,:,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,:,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;:;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::;::::::::::::;;;:;:::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;:;;:;;;;;;;;;;;;;;;:;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;
+:::::::::::::;::::;:::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;:;;::::::::;::::;:::;::::::::::;::::::::;;;::::;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::;::;;:::;;;;;:;;;;:;;;:;;;:;::;::::;:;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::;;::;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
+,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::.,,.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,::,,,:::::::::::::::::::::::::::,,,,:;;;;;:::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::,,::::::::::::::::::::::::::::::;;+;,::::::,,,,**++++;:::::,:,,,,,::,..,;;;;:,,,,,:::,,,,,,,,,,,,:::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::+#*##;+:: *#**;;;:;##.######+,:,::::,,,:,:,,::,,,,,,,,,,,,,,,,,,,::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::*##*###**###*######*:::::::::::::::::::::::::::::,,,,,,,,,:,,,,,,::,:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::+:::::*##:::;:::::::::::::::::::::::::,,,::::,,,,::::,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::##:::::::##:::::::::::::::::::::::::::::::::,......,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:::;;;;;;;;;:::::::::::::::::::::::::::...........,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::;;;;;;;;;;:::::::::::::::::::::::::::::::::::,,,,,,,,,..,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:::::::::::::::::::::::::::::::::::::,,,.,.,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,,,::::,,::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::::::::::::::::::::
+.,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::
+......           .....,.,,,,,,,,,,,,,,,,,,,,,,,::::::::::,,,,,,,,..,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
;..  .....    .......     .  ......  ........,,,,,,,,,,,,,,,,.............,,,,,,,,,:::::::::::::::::::::::::;;;::::;:::
; ..   .,.     .........,..  .....   ....... .......     ............ ......,,,,,,,,,,,,,::::::::::::::::::::::::::::::
; ..   .....  .....   .  ........   .. ................        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::
;.....  .. .  ......,. .      ....   ......... .......  ... ......,,,,,.,,,,,,,,,,.,,,,,,,:::,,,,,,...,,,::::::::::::::
;          .......   ........... . ....   .   ......... .. ...,.,,...,,,,,,,,,..........     ....,.....,,,::::::,,:::,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::,:,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;:;;:;:
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::;::;;::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
+::::::::::::;::::::::::;::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:;::;:;;::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;:;;;;:::::::;;:::::::;;;;;:::;:;;;;;:;;:;;:::::;:;;;;;;;;;;;;;;;
+,:::::::::::::::::::::::::::::::::::::;;;:::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;;;;;;;;
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::,::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,:::,,,:::::::::::::::::::::::::::,,;;;+;;:::;:::::::::::::::::::::,::::::::::::::::::::::::::::::::::
+::::::::,,::::::::::::::::::::::::::::;;;+:::::::::,****+++;:::::::::,,,,,,:;+;;:,,,,,,,,,::::,,,,,,,,,,,:::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::######+; *#***:+*+##.#####+:::::,:,::,,,,,:,:::,,,,,,,,,,,,,,,,,,,,:::::
+:::::::::::::::::::::::::::::::::::::::::::::::###+########*###*##+:::::::::::::::::::::::::::::::,,,,,,,,::,,,,,,::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::#:::::*##+::::::::::::::::::::::::::::::,,,::::,,,,,:::,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::#*:::::::##:::::::::::::::::::::::::::::::::::,.....,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;::::::::::::::::::::::::::::,,..........,,,,
+::::::::::::::::::::::::::::::::::;:::::::;:::::;:;;:;:;:;::;;;:;;;;;;;;;;::::::::::::::::::::::::::::::::::,:,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::,,,.,.,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::,,,::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::::::::::::::::::
;...,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,:::::::::,:::::::::::::::::::::::::::::::::::::
+,,. ....           .....,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::,,,,,.,,..,,,,,,,,,::::::::::::::::::::::::::::::::::::::::
;....  .....     ......     .  ......  ........,,,,,,,,,,,,,,,,.............,,,,,,,,,:::::::::::::::::::::::;;;;:::::::
;  ...   .,.     .........,... .....   ....... .......    .............  ....,,,,,,,,,,,,,,::::::::::::::::::::::::::::
;   ..   .....  ....        .......   .. ................        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::
; ......  ..    .....,,. . .   .....   ......... .......  ... .......,,,,.,,,,,,,,,,.,,,,,,,,,,,,,,,....,,,::::::::::::
;..         .......  ............  . ...        ......... ......,,,,,..,,,,,,,,,...........   ...,,,.....,,,,:::::,,:::
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,::,::::::::::::::::::::::::::;:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::;;;;:;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;:::::::::::::;:;;;:::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;:;;;;;;;;;;;;;:::;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::;;;;;;;
+::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;:;:::::::::::::::::::::::::::::::;::;:;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;:::::;::;:::::::;;;;;;::;::::;;;;:;;;;;;;;:;::;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;
+:,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:,,,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::.:::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,:::::::,,:::::::::::::::::::;;+;+:::;::::::::::::::::::::::::,:::::::::::::::::::::::::::::::
+::::::::::,,,::::::::::::::::::::::::::;;;;,::::::::*****+;;::::::::::::,,;;+;;:..,,,,,,,,,,:::,,,,,,,,,,,,:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::*######+:******##+##,#####:::+::::,,,::,,,,,,,,::,,,,,,,,,,,,,,,,,,,::::
+:::::::::::::::::::::::::::::::::::::::::::::::##*:###*########*##+::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::#:;:::*#**:::::::::::::::::::::::::::::::,,::::::,,,,,:::,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::#::::::::##:::::::::::::::::::::::::::::::::::::,....,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;::;:::::::::::::::::::::::::::...........,,
+:::::::::::::::::::::::::::::::::::::::::::::::::;:::::::;:::::;;;;;;;;;;;::::::::::::::::::::::::::::::::::::,:,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::::::::::::::::::::::::::::::,,,.,.,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::,,::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::,,:::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::::::::::::::::
;....,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::::::::,:,,,,,::::::::,:::,::::::::::::::::::::::::::::::::
+.,,,.  ...           ....,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::,,,,,,,,..,,,,,,,,,::::::::::::::::::::::::::::::::::::::
;....... .....     .. ...        ....... ........,,,,,,,,,,,,,,,,.............,,,,,,,,::::::::::::::::::::::::;;;::;:::
;.    ..   ...     ...........   .....   .......  ......    .............  .....,,,,,,,,,,,,,::::::::::::::::::::::::::
;     ..   .....  .            ..,...   .. ................        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::
;   ......  .. .  ......,. . ..  .....   .................  ... .......,,,..,,,,,,,,,,.,,,,,,,::,,,,,,...,,,,::::::::::
;...         . ......   ........ ..  . ...    .  ...  ....  ......,.,,.,,,,,,,,,,,..........    ..,,,,.....,,,::::::,,:
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:,,::,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,:::::::::::::::::::::::;:;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::::::;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;:;;::::::::::::::;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;;;;;;;
+:::::::::::::::::::::::::::::::::::;;:;;;;;;;;:;:;;;;;;;;;;:;;:;;:::::::::::::;:::::::::::::::::::::;::::;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;:;;;;:::;:::::;:;;;:;;;;;;:;:;;;;;;;;::;:;:;:;;:;;;;;;;;;;;;;
+,::::::::::::::::::::::::::::::::::::::::;:;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;
+,,,:,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::+::::::::::;::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,::::::::::::::::::+++;;;:::;::::::::::::::::::::::::,:::::::::::::::::::::::::::::::
+::::::::::::,,,,:::::::::::::::::::::::;;;+;::::::::*****++;;::::::::::,:+++;;*:,,..,,,,,,,,,,,:::,,,,,,,,,,,:::::::::
+::::::::::::::::::::::::::::::::::::::::::::::###**##++*****###*##:####:::::::::::,,:::,.,,,,,,,:,,,,,,,,,,,,,,,,::,,:
+:::::::::::::::::::::::::::::::::::::::::::::::##*:####*##########+:::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::*:;:::*#++::::::::::::::::::::::::::::::::::,::::::,,,,,,::,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::+*:::::::;##:::::::::::::::::::::::::::::::::::::::,....,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:;;;;;;::::::::::::::::::::::::::::::...........
+::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::;;::;;;;;;;;;;::::::::::::::::::::::::::::::::::,...,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::::::::::::::::::::::::::::,,,..,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,:,,,,,,,,:,,,:::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::,::::::::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;......,,,,,,,,,,:,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::::::::::::::::
+,,..,,.. ...           ...,,,,,,,,,,,,,,,,,,,,::,,,,::::::::::::,,,,,.,,.,,,,,,,,,::::::::::::::::::::::::::::::::::::
+.........  .....    ..  ...        ...... ........,,,,,,,,,,,,,,,,,...........,.,,,,,,,,::::::::::::::::::::::;;:::;::
; . .   ..    .,.    .........,.. ......    ......   .....    ............ . .....,,,,,,,,,,,,,::::::::::::::::::::::::
;        ...  ....                ......   . .. .............      . ...........,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::
+,.   ......  ...    ...,.,,. ....  .,..   ................... ...........,,,.,,,,,,,,,,,,,,,,,,,:,,,,,,,.,,,,,::::::::
;   .           .......    .......         ..       ...  .... . ....,.,,,,,,,,,,,,,,,..........   ...,,,,....,,,,::::::
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::,,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,:,,,:::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:::::::::::::::::::::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;::::::::::;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;;;;:::::::::;:
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;:;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;:::::::::::::::::::::::::::::::::;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;:;:;:;:::;::;::;::;;::;;;;;;;;:::;;;;;;;;;;;;;;;;;
+,,,:::::::::::::::::::::::::::::::::::::::::;:;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,::,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::+*+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::;:::::::::::::::::,++++;;;::::::::::::::::::::::::::,:;::::::::::::::::::::::::::::::
+:::::::::::::::,,,:::::::::::::::::::::+*;;++:::::::******+;;:,:::::,,:;+++;;*#,,,,,...,,,,,,,,,,:::,,,,,,,,,,,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::+##*###+******###*##+,###;:::::::::::::,::::,,.,,,,,::,,,,,,,,,,,,,,,::,
+:::::::::::::::::::::::::::::::::::::::::::::::##*:########*######+::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::++:::::;#::::::::::::::::::::::::::::::::::::::,:::::::,,,,,:::,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::##:::::::::::::::::::::::::::::::::::::::::,,...,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;::::;;;;::::::::::::::::::::::::::::::,........
+:::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::,...
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:::::::::::::::::::::::::::::::::::::,,,.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,:,,,,:,,:::,::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::,,,::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::::::::::::
;  ......,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::,:::::::::::::::::::::::::::
+,,,,...,,. ...           ..,,,,,,,,,,,,,,,,,,,::::,,,,:::::::::::::,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::
+............ .....        ...        ...... .........,,,,,,,,,,,,,,,,.............,,,,,,,,:::::::::::::::::::::::::;::
;.  . .    ..   .,.     ........... . .....   .......  ......    .............. ....,,,,,,,,,,,,,::::::::::::::::::::::
;          ...  ....                ......   .  . .............        ...........,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::
+,,..    .....  ... .  .,....,... ... ....   ..................  . . .......,.,..,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,::::::
;     ..  .       .......    ....... .       ..   ..  ...  ....  ........,,,,,,,,,,,,,,..........  ...,,,,,,,..,,,,::::
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;::::::::;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;;;;;;:::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;
+::::::::::::::::::::::::::::::::::::::;:;;;;;;;;:;;;;;;;;;;;;;;;::;;:;;;::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;:;;:;;;:::::;:;::::::;;;;;;::;:;;;;;;;;;;;;;;;
+,,,,,:::::::::::::::::::::::::::::::::::::::::;;;;:;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
+,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::..:::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::**+:,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;:,:::::::::::::::;*++++;;,:;::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::,,:,,,,,::::::::::::::::::,#*;;++;,,::,*+***++;;::,,:,::;++++;;*##,,,,,,,...,,,,,,,,,,,:::,,,,,,,,,,,::::
+::::::::::::::::::::::::::::::::::::::::::::::###+##********######+,####:::::::::::::::,:,:,,,.,,,,,,:,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::*###,#####*##*######*:::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::;#::::::+:+::::::::::::::::::::::::::::::::::::::,,::::::,,,,,:::,
+::::::::::::::::::::::::::::::::::::::::::::::::::::#;::::::::##::::::::::::::::::::::::::::::::::::::::::::,...,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;:::::::::::::::::::::::::::::,......
+:::::::::::::::::::::::::::::::::::::::::::::::::;;:::::::::::::::::::::;;;;;;;;;;;:::::::::::::::::::::::::::::::::,.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;:;::::::::::::::::::::::::::::::::::::,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,:,:,::,,:::,,:::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::,:,,::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::
;. ....,,.,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::,:::::::::::::::::::::::::
+..,,,,,..,.. .....        ...,,,,,,,,,,,,,,,,,,,,:::,,,,,:::::::::::::,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
; .............  ....     .  ...         ..............,,,,,,,,,,,,,,,,,,...........,,,,,,,,:,::::::::::::::::::::;;;;;
;  .   ..    ..   .,..    ........... .......   ......   .. ...   .............  ......,,,,,,,,,,,,::::::::::::::::::::
;            ...  ....               .......   .. .   ............       ...........,,,,,,,,,,,,,,,,,,,,,::::::::::::::
+,,,,...   .. ..   .. .. .....,,....... ..,..   .................. . . .......,.,..,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,:::::
;  .   .... ..      . .  ..    ......  ..      ..   ..  ...  ..... ......,.,,,,,,,,,,,,,,,.......... ...,,,,,,,...,,,::
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::,,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;
+::::::::::::::::::::::::::::::::::::::::::;;;;;;:;;;;:;;;;:;;;;;;:;;:;;;::;;::::::::::::::::::::::::::::::::;:;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;::;;:;;:;;;:;::::::::::::;::;:;;;::;;;;;;;;;;;;;;;
+,,,,,,,,:::::::::::::::::::::::::::::::::::::;;;;::;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::
+,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,:::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::,..:::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::,::;:::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,:::::::::::::+*+++++;::;:::::::::::::::::::::::;+:::::::::::::::::::::::::::::::
+:::::::::::::::,,:,,,,,::::::::::::::::::##;;++;,::,*+****.:;::,.,::;++++;;*##*::,:,,,,,.,,,,,,,,,,,,,:::,,,,,,,,,,,::
+::::::::::::::::::::::::::::::::::::::::::::::###*##********######+*###*:::::::::::::::::,,,,,,.,,,,,,,:,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::###:;####;#*#**#####*:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::,*::::::::#:::::::::::::::::::::::::::::::::::::::::,::::::,,,,,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::;#::::::::::::::::::::::::::::::::::::::::::::::,...,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;::::::::::::::::::::::::::::::....
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;::::::::::::::::::::::::::::::,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,::,:::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::,,,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;... ....,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::::
;.....,,,,...... ...         ...,,,,,,,,,,,,,,,,,,,:::::,,,,:::::::::::::,,,,,,,.,,,,,,,,,,::::::::::::::::::::::::::::
;   .............  ....     .   ..         ...............,,,,,,,,,,,,,,,,,...........,,,,,,,,:,:::::::::::::::::::::;:
;        ..   ....  .,,..   ....... ...  .....     .....    .. ..   ............. .......,,,,,,,,,,,,::::::::::::::::::
;              ...  .....              ........  ..     ............    . . ...........,,,,,,,,,,,,,,,,,,,:::::::::::::
+,,,,,,...    . ..   ....   ...,,,,. .......,..   ..................... .... ......,.,,,,,,,,,,,,,,,,,:::,,,,,,,,,,,,::
;         ...  . .    ...         .....           ..   .. ....  .... ......,.,,,,,,,,,,,,,,,,......... ..,,,,,,,,,..,,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::,,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,:,:::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;:;;:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:;;;;;;:;;:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;:;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+:::::::::::::::::::::::::::::::::::::::::::::;;;:;;::::;;:;;;;;;;;;;;;;;::;;:::::::::::::::::::::::::::::::::::;:;;;;;
+::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;:;:;;;::;::::::::;;;:;::;;;;;;;;;;;;;;;;;;;;;;;;
+,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::;:;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:
+,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,:::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::.,,:::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::;;:;,::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,::::::::::::**+++++;::;:::::::::::::::::::::::;;:::::::::::::::::::::::::::::::
+:::::::::::::::::,,,,,,,,,::::::::::::::::##*;*#,;;;+;****,,:;:;:.+++++;;;+###+:::::,:,,,,,.,,,,,,,,,,,,,:::,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::+###:####*****#######;###+;::::::::::::::::::::,,,,,,,.,,,,,:::,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::*+*::+###:*****####**:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::*#::::::::##:::::::::::::::::::::::::::::::::::::::::::::::::::,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::*:::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::,...,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:::::;:;::::::::::::::::::::::::::::::,.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;:::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::,:,,::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; .........,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::::
;.......,,,,,.....   ..         ..,,,,,,,,,,,,,,,,,,:::::::,,,::::::::::::::,,,,,,,.,,,,,,,,,::::::::::::::::::::::::::
;      .... ........  ....        ...         ...............,,,,,,,,,,,,,,,,,...........,,,,,,,,,,::::::::::::::::::::
;           ...  ...   .,...   ..... ..... . ..,.    .....    ..  ..  .............. .......,,,,,,,,,,,,:::::::::::::::
+,..              ...  ....               .,..... . .. . .............      . ...........,,,,,,,,,,,,,,,,,,,:::::::::::
+,,,,,,,,,...    ....   .....  ...,,,....... ..,.    ......,..............  .........,..,,,,,,,,,,,,,,,,,:::,,,,,,,,,,,
+.          .  .  .     .. .        ......           .   .. ..... ..... ......,,,,,,,,,,,,,,,,,,...........,,,,,,,,,,..
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::
+,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;:;:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;:::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;:;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
+;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;:::::::;;;;;;;;;;;;;:;;:;::::::::::::::::::::::::::::::::;;:;;;
+:::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::;;;::::;:;;;;;;;;;;;;;;;;
+,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::;;:::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::.:::,::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,:::::::::::;;;;;;,::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;:,::::::::::***++++;::+;:::::::::::::::::::::;;;:::::::::::::::::::::::::::::::
+:::::::::::::::::::,,,,,,,,,,:::::::::::::;#####:;;; +****;:++++*;++;;;;+*####,:::::::,:,,,,,,,,,,,,,,,,,,:::::,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::###*:##**#****#######;*+:::::::::::::::::::::::::,,,,,,..,,,,,,:,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::##;:::###:#**#*####**:::::::::::::::::::::::::::::::::::::::::::::::,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::##::::::::::::::::::::::::::::::::::::::::::::::::::::::,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::,,.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::;;;:::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:;:::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,:::::::::,,,,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;   .........,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;  ........,,,,......   .         ...,,,,,,,,,,,,,,,,,,::::::,,,,:::::::::::::,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::
;         .... .......   ...        ...         ...............,,,,,,,,,,,,,,,,,...........,,,,,,,,,:::::::::::::::::::
;         .   ...  .... .......   ....   ...   .....    ......   .. ... . .............. .....,,,,,,,,,,,::::::::::::::
+.....              ....  ...              .........   ..   ..... ......     . .............,,,,,,,,,,,,,,,,,,:::::::::
+,,,,,,,,,,,...    ....   .....  ...,,,,.........,..   ..................  . ...........,,.,,,,,,,,,,,,,,,,::::,,,,,,,,
+....      .   .    ...    ...        ......           ..   .. ..........  .....,.,,,,,,,,,,,,,,,,,..........,,,,,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::;::::::;;:;;;:;;:::::;:;;;;;;;;;;;:;;::::::::::::::::::::::::::::::::::;;;;
+::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;:::::::::::;::::::;;;;;;;;;;;;;;;;
+::,:::,,,:,,,,,::::::::::::::::::::::::::::::::::::::::;;;:;;;;;::;::::::::::::::::::::::::::::::::::::::;;:::::::::::
+::,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,:::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::,:::.::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,,,,,,,:::::::::;;+;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,:::::::****++++;::;+::::::::::::::::::::;++;;::::::::::::::::::::::::::::::
+::::::::::::::::::::::,,,,,,,,,,:::::::::::+**##;;:: *****; +;+;#++;::;*#####+,::::::::::,:,,,,,,,,,,,,,,,,,,::::,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::###*+*#+*#*##*#######+;:::::::::::::::::::::::::::::,,,,,,,.,,,,,:::,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::##::::###:*#*#*###***:::::::::::::::::::::::::::::::::::::::::::::::,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;:;;;::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,::,,,:::::::::::,:::::::::::::::::::::::::::::
+,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::::::::
;      .......,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::,:::::::::::::::
;     ........,,,......    ..       ...,,,,,,,,,,,,,,,,,,,::::::,,,,:::::::::::::,,,,,,,,,,,,,,,,,,::::::::::::::::::::
;.          ....... ..  .  ....         .         ................,,,,,,,,,,,,,,,,,,......,...,,,,,,,,:::::::::::::::::
;            .   ..   ... . .....  ...... . ..  . ....     ....     .  ... ....,......... .......,,,,,,,,,,,:::::::::::
+.....,..               ..    .              ..,........  .   . ..........      ...............,,,,,,,,,,,,,,,,,:::::::
+,,,,,,,,,,,,,....    ....  .....   ..,,,,. ........,.    .................. .  .............,,,,,,,,,,,,,,,,::::,,,,,,
+,,,....               ...                .....           .   ........ ....  ......,.,,,,,,,,,,,,,,,,,..........,,,,,:,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::
+,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::
+,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,:::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;;:::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;
+:;:::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;:::::::;:;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;:;;:;;;:::::::::;::;;:;;;;;;;;;;;;;;;;
+:::::::,:,,:,,,,,,::::::::::::::::::::::::::::::::::::::::;:;:;;;:::::::::::::::::::::::::::::::::::::::::;:;:::::::::
+:::::,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,::,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::;;::,::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;+,,,,,,,,,,,,:::::::++++;;:,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;+;;,,,,::::******++;:::+:::::::::::::::::::;++;;;::::::::::::::::::::::::::::::
+::::::::::::::::::::::::,,,,,,,,,,,::::::::,####+*+: *****; ;;;:##::;+######*:,:::::::::::::,:,,,,,,,,,::,,,,::,::::,,
+:::::::::::::::::::::::::::::::::::::::::::::###*#**#*#*#**#######*::::;::::::::::::::::::::,:::::::,,,,,.,,,,,,,:::,,
+::::::::::::::::::::::::::::::::::::::::::::::*+::::#+#::****###*#*::::::::::::::::::::::::::::::::::::::::::::::::::,
+:::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;;;;;;;:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:;;;::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,::,,,,,,::,:::,::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::,,::,,:::::::::,:,::::::::::::::::::::::::::
+,:,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::::::::
;      . .......,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;        .......,,,,......   ...      ...,,,,,,,,,,,,,,,,,,,,::::::,,,:::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::::
;...           .,.... ...  .  ...      .   .        ................,,,,,,,,,,,,,,,,,,,.....,...,,,,,,,,,::::::::::::::
;..             .  ...  .... . .....  ...... . ..  . ....    .....     . .........,......... .......,,,,,,,,,,:::::::::
+...........              ...                 ....,.......  ...  .........,.        ........... .,,,,,,,,,,,,,,,,,,::::
+,,,,,,,,,,,,,,,....      ..   .....  ...,,,,........,,,.    ............ ..... .  .............,,,,,,,,,,,,,,,:,:::,,,
+,,,,,,....               ..                 ....            .   .. ..... ..... ........,,,,,,,,,,,,,,,,,.........,,:,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::
+,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,:,:,,,,,,,,,,,,::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::;;;::;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+;;:;::;;::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
+;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::;;;;;;;;;;;;:;:::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::;::;;;;;;;;;;;;;;;;;:;;;;:;:;:;::;:::::;;::;:;:;;;;;;;;;;;
+::::::::::::::::,,,,,::::::::::::::::::::::::::::::::::::::::::;;::;;;;:;:::::::::::::::::::::::::::::::::::::::;;::::
+::::::::,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::;:;;::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,::,,,:::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::,,,..,.,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::: **:::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,:,,::+++++++;,:::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#;;;+:,,,,,:*******+;;:,+:::::::::::::::::;+;;;;::::::::::::::::::::::::::::::::
+:,,:::::::::,,::::,,::::::::,,,,,,,,,,::::::;###*##+ *****++::;:##,#########;,,,,,:::::::::::::::,,,,,,,,,::,,,,,:,:::
+::::::::::::::::::::::::::::::::::::::::::::,######*######*#######*::::::::::::::::::::::::::::,:::::::,.,,,,,,,,,,:::
+::::::::::::::::::::::::::::::::::::::::::::::;:::::#:#:::***##;##*:::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::##*::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;::;;:::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;:;::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:,:::,,,::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::,::::,,::::::::::,::::::::::::::::::::::::
+,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;            ......,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;           ...,,,..,,,. ....  ..,..     ...,,,,,,,,,,,,,,,,,,:::::::::,,::::::::::::::::,,,,,,,,,,,,,:,:::::::::::::::
+. ..             ....,...... .. .,.          .       ..................,,,,,,,,,,,,,,,,,,,.....,..,,,,,,,,::::::::::::
;               .  . ....   ... ....,..  ......   ..  . ... .    .....   ..  ........,,........ .......,,,,,,,,,,::::::
;..............               ..                 .............  ..  ..........,       ............ ...,,,,,,,,,,,,,,,,:
+,,,,,,,,,,,,,,,,..... .          ......  ..,,,,.........,,.    ............. ....    .............,,,,,,,,,,,,,,,:,,:,
+,,,,,,,,,,....                 .            .. .                   ........ ... . . ....,.,,,,,,,,,,,,,,,,,......,.,,:
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:::::::::::::
+,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;::;:::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
+:::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+;;;;;:;::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;;:;;;;:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::;;;;;;;;;;;;;;;
+::::::::::::::::::,,,,,::::::::::::::::::::::::::::::::::::::::::;:::::;;;:::::;::::;::;::::::::::::::::::::::::::;:::
+:::::::::::,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+..,,:,,,.,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::...::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::;+*;::,:::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;,,,,,,,,,,,,,,,,+*+++;;;::::+:::::::::::::::::::::::::;:::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,**;;;+:,,,,,******++;;::::::::::::::::;;++;;+;::::::::::::::::::::::::::::::::::
+::::,,::::,::::,:::::,,::::,,:,,,,,,,,,,,:::;###;##*:*#******##*##;#######*::;,,,,,,,::::,::::::::::,,,,,,,,,::,,,,,:,
+:::::::::::::::::::::::::::::::::::::::::::::##*+#################*;::::::::::::::::::::::::::::::,:::::::,.,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::+:::::+**##:**+:::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::###::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::;;;;;;;;;;;;;;;:::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::,,::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::::::,:::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::,:::,,:::::::::::,::::::::::::::::::::
+,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::
+,.          .  .....,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.             ...,,...,,,. ....  .,,...    ..,,,,,,,,,,,,,,,,,,,:::::::::,:::::::::::::::::,,,,,,,,,,,,,,,::::::::::::
+,,,...              ...., ..., ... .,..     .   .      .............,..,,.,,,,,,,,,,,:,,,,,.,....,,..,,,,,,,,:::::::::
; ..                  . ....  .... . .,...  ......    .  . ...      .....   ..  ........,,........ .......,,,,,,,,,,:::
+.................              ...                .............. .... ...........      ............  ...,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,.....  .         ......  ...,,.........,,,.    ..................     .. .........,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,...                 .         .  .. .                 . ........ ...   ......,.,,,,,,,,,,,,,,,,,.....,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::
+,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::
+,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,:,::::,,,,,,,,:,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+;:;;;;;;:;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+;::::;:::;:;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;::;::;:::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;;;
+:::::::::::::::::::::,,,,:::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;:;:;::::::::::::::::::::::::::;:;;::::;;:;
+::::::::::::::,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::;;;;;;;;:::::::::::::::::::::::::::::::::::::::
+:,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,:::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,.,.,,,,,,......,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::.,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::.:;;::.:::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;,,,,,,,,,,,,,,,,**+++++;:,::+:::::::::::::::::::::::::: ;:::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*#;;+++:.,,,******++;;;:,::::::::::;++++;;*:::::::::::::::::::::::::::::::::::::
+::::::,,,::,,,:::,,,:::,,,:::,,,:,,,,,,,,,,,###*:##*+*#***+*###*##+#*####+:::;:::,,,,,,,:::::::::::::::,,,,,,,,,::,,,,
+::::::::::::::::::::::::::::::::::::::::::::*###:###*#*########*##*+::::::::::::::::,::::::::::::::,:,:::::::..,,,.,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::,:,::::*###::#::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::##::::::::*##::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::;;;;;;;;;;;;;;;::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::,,,::::,,:::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::,,,,:::::::::::,:::::::::::::::::
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,.          .......,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+....             ...,,...,...  ..  ..,,..     ..,,,,,,,,,,,,,,,,,,,::::::::,,::::::::::::::::::,,,,,,,,,,::,::::::::::
;...,,...               .,,,,.............      .           ...........,,..,,,,,,,,,,,,,,:,,,,,,,.,..,,..,,,,,,,,::::::
;     .                  . ....  .... ....,..  ...... .     . ...     .......  .. ........,,,,....... .......,,,,,,,,,,
;....................              ...  .            ....,,......... ............,.,.     .............  ...,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,.....  ..         ...,.. ...,...........,,..    ............. ....      .   .......,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,...     ...         .         .  .. .         ..     ........ ...... . ......,.,,,,,,,,,,,,,,,,,.....
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::,,,,,:::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::
+:,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::
+:,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,:::::::,,,,,,,,,,,,,,,,,,,,,,,,,::::::,,,,,,,:::::::
+::::::::::::::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,:::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+;::;;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::;::;;;:;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;:;;:::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;:;:;:;;::::;:;;;;;;;;:;;;;
+:::::::::::::::::::::::::,,,,:::::::::::::::::::::::::::::::::::::::;;;;;::;:;;;:::;:::::::::::::::::::::::::;:;::;:;;
+:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::;;;;:;:;::::::::::::::::::::::::::::::::::::::
+:::::,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,..,...,,,,,,.,.....,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::.::,.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,::;;;;,:::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,+**+++++;:,::+::::::::::::::::::::::::;+:::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*#+;++;...,,*******;;;;:,:::,::;+++++;;*###:::::::::::::::::::::::::::::::::::::
+,,,::,::,:,,,,,,,:::,,,::,,,,,:,,,,:,,,,,,,,###*,#*+**#****########*,###;;::::::::::,,,,,,,:::::::::::::::,,,,,,,,,::,
+::::::::::::::::::::::::::::::::::::::::::::*##*:##########*###+##*+:::::::::::::::::::,:,::::::::::::,,,::::::,...,,.
+:::::::::::::::::::::::::::::::::::::::::::::::::::,::+:::,*#**:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,##::::::::+##::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;:::::::::::::;:;;;;;;;;;;;;;;;;;::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::,:,:::,,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,:,,,,,:::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::
+,,,,,,,.         .......,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;........           ....,,.....   ..  ..,,,...   ..,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::,,,,,,,,,:::,:::::::
;......,,..                .,,,,.............          .     ...........,,,,.,,,,,,,,,,,,,::,,,,,,,,,,..,,.,,,,,,,,,:::
;        ..                 . ....  .... .......  .....  .     . ...      ...... ........,..,,,,,...............,,,,,,,
+........ . ............              ...  .            ............... ... ..........,.     ............. ....,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,. ...   . .       ...,.. ....... .......,,,.    .............  ...        . .......,,,,,,,,,,,
;.,,,,,,,,,,,,,,,,,,,...  . ....        ..   .     .. ......       ..    . ....... ........ ........,,,,,,,,,,,,,,,,,..
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::,,,,,,,:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+:::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+::::,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,,,,,,,::::
+:::::::::::::::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::,,,:,:::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::;;;;;;;:;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::;;;;;;:;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;::;;;;;;;;;;;;;;;;;;;;;:;::;:;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;:::;;;;:::::::::::::::::::;;;;;;;
+::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::;:::::::::;:;:;::;;;;;:::::::::::::::::::::::::::::::::
+:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.....,,,,,,,,,,,...,....,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,,::::::.::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,;;;;;;:.::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;,,,,,,,,,,,,,,,*#*++++;;:,,,;:::::::::::::::::::::++;;;:::::::::::::::::::::::::::::
+::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*#*;;;,+,;;:*+*****+,:;::;;:+++++;;;*####+::::::::::::::::::::::::::::::::::::::
+:::,,,,::,:,,,,,,,,,,::,,,::,,,,,,,,,,,,,,,*###+##****#****#######*;*####*:::::::::::::,,,,,,,,::::::::::::::,,,,,,,,:
+:::::::::::::::::::::::::::::::::::::::::::,##*#:##############+##*:::::::::::::::::::::::,,::::::::::::::,,,::::::,..
+:::::::::::::::::::::::::::::::::::::::::::::::::::#:::::::**##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::###::::::::###::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::;:;;;:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::;;;:;;;;;;;;;;;;;;;;:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::,,:,,:,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::,:,:,,,,,:::::::::::::::::::::
+.,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.,,,,,,,,,.    . .....,,,,.,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;........,..            ....,....        ..,,,.......,,,,,,,,,,,,,,,:,,,,::::::::::::::::::::::::::::::,,,,,,,,::::::::
;.........,.,..           . .. .,,,,...,........             .. ....,......,,,,,,,,,,,,,,,,,,,::::,,,,,.,..,,.,,,,,,,,:
+...      ....   .             . ....  .... .. ....  ......       . .....    ..............,,,..,,,,....... .......,,,,
+..,,........ .... ...  ...               ..   .            .. ,,......... ............,.,.      ............  ..,.,,,,
+::::,,,,,,,,,,,,,,,,,,,,,,,.. .    .  .   .  ...... ...............,,,.    ............. ....          ........,,,,,,,
+,...,,,,,,,,,,,,,,,,,,,............        .   ..    .........       ...    ..... ..... ..... .... .,..,,,,,,,,,,,,,,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::,,,,,,,:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::
+::::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::,,::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::
+::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::,,,,,,:
+::::::::::::::::,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,::::::::::::::::::::::,:,:,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::;::;::;;:::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::;;;;;;::;;:;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;:;;:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;:;::;;;;;;;;;:::;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;:::;:::::::::::::;::::;;;;;
+:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::;:::::::::::::::;;:;;;:;;:;::::::::::::::::::::::::::::
+:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,...,,,,,,,,,,,,,,.....,...,,,,,,,,,,,,,,,,,::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::.:::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,:;;++;;;:.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;:,,,,,,,,,,,,,+*#*++++++:,,;+:::::::::::::::::;;+;;;;::::::::::::::::::::::::;::::::
+,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,###+;:#++;;+.+##***+,++;;:#++;;;;*######::::::::::::::::::::::::::::::::::::::::
+::::::,,,,:,,:,,,,,,,,,,:,,,,::,,,,,,,,,,,,###*,####**###*########+###*;::::::::::::::::::,,,,,,,::::::::::::::::,,,:,
+:::::::::::::::::::::::::::::::::::::::::::+##*,+#####**#######*##*::::::::::::::::::::::::::,,,:::::::::::::,,:::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,*:::::::##+#:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::##+::::::::###::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::::;::;;;;::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::;:;:::;:;;:;:;;;;;;;;;;;;;;;;;;;:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,:::,:,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::,,:,,,,,,::::::::::::::::::
;...,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;....,..,,,,,,............,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+..........,,..             ..... .      . ..,,,,.......,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::,,,,,,,:::::
;............,,...          ......,,,,...,,.......           . .......,,,,..,,,,,,,,,,,,,,,,,,,,::::,,,,,,.,,.,,.,,,,,,
+,..... ..   ....                 ......  .... ......   .......      . .....    ............,,,,,,,,,,,,..............,
+,,,,,,,........ ........ .. .              ...   .       ..  ....,,........  . ..............      ............ ...,.,
+,,::::,,,,,,,,,,,,,,,,,,,,,,,,..             .  ...... ...............,,,.    ..................         .........,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,.......,,..        ..  ..    ....... .      ....   .................. .........,,,,,,.,,,,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::,,,,,,,,:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::
+::::::::::::,,,,,,,,,,,:::::::::::::::::::::::::::::::,,:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::
+::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,,,,:
+:::::::::::::::::,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,:::::::::::::::::::,,:,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::;:;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::;:;;;;:;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;:::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;:;::;:::;:::;;:::::;;
+:::::::::::::::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::;;;::;:;:;;;::::::::::::::::::::::::::::
+,:::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,::,.,,,::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,....,,,,,,,,,,,,,...,.,,,.,,,,,,,,,,,,,,,,,:::..::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::,,,,,,,,,,,,,,,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,:+*:::.:::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,;++;+;;;:.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;;,,,,,,,,,,,,,*#**++++;;;,.++:::::::::::::::;++;;+;:::::::::::::::::::::::::::;;;:::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+###+##;;;;+ *#****: ;;;;##+;;+#########::::::::::::::::::::::::::::::::::::::::
+::::,:::,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,*###+;#########*####*###;##;:::::::::::::::::::::::,,,,,,,::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::####:###############*#**::::::::::::::::::::::::::::,,,,:::::::::::::,,,:::
+:::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::*#:+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::##:::::::::##;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:;::;::;;;;;;;;;;;;;;;;;;
+:::::::::::::::::::::::::#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,:::,,,,,,,,,
+,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::,::,,,,,,,::::::::::::::
;....,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;...........,,,,,...........,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::::::
+,,,..........,,..             .....     .  ....,,,,....,,,,,,,,,:::,,,:::::::::::::::::::::::::::::::::::::::,,,,,,:::
;.............,......         ........,,,,..,,.......           ........,,,,,,,,,,,,,,,,,,,,,,,,,:::::::,,,,,.,,.,,.,,,
+,,,.........    ...                 ......  .... ......    ......         .....   ...........,,,,,,,,,,,,.............
+:::,,,,,,,........ ........  .                 .    ..      .. .....,,........  . ..............      ............ ...
+,,,,::::,,,,,,,,,,,,,,,,,,,,,,,,...            ..   ..... ..... . .......,,..    ..................         .........,
+,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,......,,,..       ...  ..    .......        ....   .................. ......,...,.,,,.,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::
+:::::::::::::::,,,,,,,,,,:::::::::::::::::::::::::::::::::,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::
+:::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,:
+::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::::::,::,:::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::;::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::;::;;:;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;:;;:::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::;;:;;;;:;:;;;;;;;;;;;;;;;;;;;;;;:;:;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;::;;
+::::::::::::::::::::::::::::,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::;;:;;;;:;::::::::::::::::::::::::::
+,::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,:::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,.,,,,,,,,,,,,,,,,...,,,,,.,,,,,,,,,,,,,,,, ,.::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,::,,,,,,,,,,,,,,,,::::,,,,,,,,,,,,,,,,,,,,,,:*#*;:;.:::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,:::.,,,,,,,,,,,,,,,,,,,,,:+++++;;;:.:::++:::::::::::::::::::::::::::.+::::::::::::::::::::::::::
+,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,;;;;:,,,,,,,,,,,;******++;;::.+::::::::::::::;+++;;;::::::::::::::::::::::::::::::;;;;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::######,:;; :##****+;;;;:##+#########+:#::::::::::::::::::::::::::::::::::::::::
+::::::::,:::,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,###*,####*#*###*########;;,,::::::::::::::::::::::::::,,,,,,::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::##+*,,#####,#####*###*#**:::::::::::::::::::::::::::::::,,,,,::::::::::::,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::##::::::::*;,#:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::###:::::::::##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::;:;
+:::::::;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;::;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;:
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::
+,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,
+,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::,::,,,,,,,:::::::::::
;......,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,
;. ............,,,,,........,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+...,,,.........,,,..             .. ..     .......,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,:,,,,
+...............,.......          .... ..,,,,...,.. ...            .......,,,,,,,,,,,,,,,,,,,,,,,::::::::::,:,,,.,,..,,
+::,,,,.........    ...                 ............ ......    .......        .....   ........,,,,,,,,,,,,,,,,.........
+::::::,,,,,,,................                     .    ...     ........,.......... . ......  ......     ............. 
+:,,,,,,,:::,,,,,,,,,,,,,,,..,,,.,,,....           ..   ..... . ...   . .. ...,...   . ................        ........
+::,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,.,,,,..     .....  ..    .......  .     ....   .................. ............,,,
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::,,,,,,,,,,:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,
+:::::::::::::::::::,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::
+:::::::::::::::::,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::
+:::::::::::::::::::::,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::,:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::;:::;:;::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;::::::;:::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;:;;:;;
+,,::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,:::::::::::::::;:::::::::::::::::::::::::;;;;;;;;;:::::::::::::::::::::
+,,,::::::::::::::::::,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,.,,:::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,.,.,,,,,,,,,,,,.,,,::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,::,,,,,,,,,,,,,.,,:::,,,,,,,,,,,,,,,,,,,,::*;:,.:::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,;,::,,,,,,,,,,,,,,,,,,+*++++++;:.:::++:::::::::::::::::::::::::;+;:::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;+:,.,,,,,,,,*#*****+++;;:.:::::::::::::++++;:*#:::::::::::::::::::::::::::::::::;::
+::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+,,##+##*#+:+ *##***+;::;+*##;########+::,::::::::::::::::::::::::::::::::::::::::
+::::::::::,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,####*,######*############+,,,,,,:::::::::::::::::::::::::::,,:::,::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,+##;:,*####,**###*###***::::::::::::::::::::::::::::::::::::,,,,,:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::#::::::::+##;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::##;::::::::,##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::;::;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;::;:;;;;;;;;;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,
+,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::,,,,,,::::::::
+.........,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;..... ...............,,.......,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;................,,..,,...             . ..    ......,,,,,,,,,,::,:::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,................,......           .......,,,,...... ...           ....,,,,,,,,,,,,,,,,,,:,,,,,,::::::::::::::,,,.,,
+:,::,,,,,....... .   .....                .............  ....     ..  ..         ......  ........,,,,,,,,,,,,,,,,.....
+::::::::,:,,,,,,,....  .. ......           .     .   ..  . ...    ...........  ......    ......  ......    ...........
+:::::,,,,,,:::,,,,,,,,.,,,.,,,..,,..,..               ..   ....                ......   ..................        ....
+:::::,,,,,.,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,...   ......  ...    ...,.,,. ....  ....   .................. ...........
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::,,,,,,,,,,:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::,,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,::::::::::,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;::;;::::::;;;;;;;;;;;;;;;;;;;
+,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+,,,,,:::::::::::::::::::::::::::::::::,:,,,,,,,,,,::::::::::::;::::::::::::::::::::::::::;;;;;;;;;;;::::;:::::;:;;;:::
+,,,,,,,:::::::::::::::::::::::,,,:::,,,,,,,,,,,,,,,,,,,,,,,:::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,,,,,,,,.:::,:,,,,:::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,::,,,,,,,,,,,,..,,,::,,,,.,,,,,,,,,,:::;;;;:.,,,,:::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,:,,,,,,,,,,,::,,,,:::,,,,,,,,,,,,,:**+++*;+;:.,,:++:::::::::::::::::::::::::++;:::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;+;,,,,,,,,,,*******++;;;:,,::::::::,:;++++;;*##:::::::::::::::::::::::::::::;;:::::
+:::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+,,#####+#*+. *##***++;+*####+########:,,:::::::::::::::::::::::::::::::::::::::::
+:::::::::::,,,,,,::,,,,,,,,,,,,,,,,,,,,,,####*+###################+,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,*+*,,,+####,#***#####+**:::::::::::::::::::::::::::::::::::::::,,,,,,:::::::
+::::::::::::::::::::::::::::::::::::::::::::::::;:#:::::::::##+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::##:::::::::,##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::;;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:;;;;:;:;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:,,,,,,,,
+,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,::::
;..,,,,......,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;...... .  ...............,,,..,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+...................,,,,,,,,..            .........,,,,,,,,,,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,......,................           ........,,,......    .        ....,,,,,,,,,,,,,,,,,,,,::::,,,,::::::::::::::,,
+::::,,,,,,,,,......  .  ......                .... .. ..  .  ...      .  ...         ...... ........,,,,,,,,,,,,,,,,,.
+:::::,::::::,,,,,,,,.....   . .... .           .    .   ...   .....   ........... .......   .....    .. ...   ......,.
+:,:::::::,,,,,:::,,,,,,,,,.,..............                ..  ....               .......   .. .. .........,...    ....
+,,,:::::,,,,,..,,,,,,,,,,,,.,,..,,,,,,,,,,,,,,,,....    . .   ... ..  .,,,,,..........,..   .................. .. ....
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::::::,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::;:;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::;::;;;;;;;;;;;;;;;;
+,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::,,,,,:::::::::;:::::::::::::::::::::::::::;;;:;;;;;;;;;;;;;;;;;;;;;::
+.,,,,,,,,,::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,;::::::::::::::::::::::::::::::::::::::::::::::::;;:::::
+,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,,,, :::,,,,,::,,,,+:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,.,......,,,,,........,::;;;;::,,,,,,,,+,::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,::,,,,,,+,,,,,,,,,:::,,,,,,,,,+**+++++++:..,,;;,,:::::::::::::::::::::::+;;;::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;++;,,,,,.,,,.##*****++;;;:,.+,,,::::::;++++;;+###::::::::::::::::::::::::::::::::::;
+::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,:#####:#*; ;###***++:+*#*###,#######+,,,::::::::::::::::::::::::::::::::::::::::
+:::::::::::::,,,,,,,,,:,,,,,,,,,,,,,,,,,,###**####################+,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::,,:::,:,:,,:,:,:##**,,:#####;****#*###+***,,,,:::::::::,::::::::::::::::::::::::::::,,,,,,,::
+::::::::::::::::::::::::::::::::::::::::::::::::+:+:::::::,*#:#:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::,##::::::::::##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+:::::::::::::::::::::;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;;;;:;;::;;;;:;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::,
+::,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,
;.....,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::
;..........    ..............,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,......................,,,,,,,,,.            ......,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,.,,,.......,,,... .........            ....,........ ...  ..,,..     ..,,,,,,,,,,,,,,,,,,,::::::::,::::::::::::::
+,,,,,,,,,..............     ...,,....              ....,. ...........      .  ..        ..............,,,,,,,,,,,,::::
+,,,,::::::,::::,,,,,,,... .                        .  ...   ... .. ....   ......   .   ......    .......  .. .......,,
+::,,:,::::::::,,,:,:,,,.,........  .............              ...                ....,........  .... .........,.      
+:::,,:,:::::,,,,,.,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,..... ...         .....  ...,,,.........,,..   ...................   
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::,,,,,,,,,:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::,,,,,,,,,,,,::::::::::::::::::::::::::::::::,:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,:::::::,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;:
+,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;
;...,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;;;;;;;
+..,...,,,,,,,:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,+,::::::::::::::::::::::::::::::::::::::::;;;;;;;:;::::
+..,.,,,,,,,,,,,,,,,,::::::::::::,,,,,,,,,,,,,,, :::,,,,,,,,,:,:,,,::::::::::::::::::::::::::::::::::::::::::::::::::::
+...,,,,,,,,,,,,.,,,,,,........,,,,..,,,........:;;;;:,.,,,,,,,+,,,::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,::,,:+,,,,,,,,,,,,:::,,,,,,+*++++++;;:.,,,.;,,,,::::::::::::::::::::::;+;::::::::::::::::::::::::::
+::,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;+:,,:,,,,,,,*#******++;;;:,.+,,,,,,,::,:;++++;;*#::::::::::::::::::::::::::::::::::;
+:::::::,,:::::,,,,,,,,,,,,,,,,,,,,,.,;######,;:: ;###***+.;;:;;###.#########,:,:::::::::::::::::::::::::::::::::::::::
+::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,+###*:######*#############+*:,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::,:::,,,,,,,,,,,,,,*#*#,:#######**##########*,,,,,,,,:,,,,::,,,:::::::::::::::::::::::::::,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::,;:::::::::##;:::::::,,,,::::::::::::::::::::::::::::::::::::::::::,::
+::::::::::::::::::::::::::::::::::::::::::::::::###:::::::::,##;::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:;;;:::::::::;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;::;;;::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:
+:::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,
+,,,,,..,..,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::,
;....... ......   .......,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,... ......................,,,,,.  .........,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,.............,,... .......,..             ......     . . ...,,,,.......,,,,,,,,:,,,,::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,........................          .  .. .,,,,...,,.......              . .......,..,,,,,,,,,,,,,,,,,,,::
+,,,,,,,,:::::,:,:,,,,,,..... .    . ..                 . ..... ...  ..... .  .......      . ....    .............,,,,,
+:::::,,,,:::::::::,,,:,,,..,........  ........ ...               ...  ..           ....,.......... ............,.,.   
+::::::,::,,:::::,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,....           .   ...... ...... ........,,..    ..................
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::,,,,,,,,,,,:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::::::,,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,:
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::;;;;;;;;;;;;;;;;;;
+.,...,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::;;::;;;;;;;;;;;;;;;;;;
;.........,.,,,,,,,::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,+:::::::::::::::::::::::::::::::::::::;;;;;;;;;:;:;;;:;
;......,,..,,,,,,,,,::::::::::::::::::::,::,,,,:.:::,,,,,,,,,,,,+,,,,.,,,::::::::::::::::::::::::::::::::::::::::::::::
;.......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::+;;:,.,,,,,,,+;,:,,,,::::::::::::::::::::::::::::::::::::::::::::::::
+.....,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,..,,:::,,+*++++++;;:,.,,,+;,,,,,,,,::::::::::::::::::,;+,::::::::::::::::::::::::
+:::::,,,,,,,,,,,,,,,,,,,,,,,,,+;;++:,,,,,,::::*#******++;;::,.+,,,,,,,,,,,,:++++;;+;::::::::::::::::::::::::::::::::::
+:::::::::,:,,,::,,,,,,,,,,,,,,,,,,,*,+######:;::.+##****+.;;;:;###,##########,:*::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,####*,##+###*###*#####*###++*;,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::
+:::::::::::::::::::::::,,,,,,,:,,,,,,,,,.##+*,,######***#########**,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::#::::::::+*###::::::,:,,,,,,,::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::###:::::::::,###::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::;;:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,......................,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,.... ......... ..............,,,......,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,::,,,,,,,...........................,...            .. ...  ........,,,,,,,,,,::,::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,......................           .. ....,,,,...,,.  ..           ...,,,,,,,,,,,,,,,,,,,,,,,,,,::::
+:::::,,,,,,,,:::::,:,,,,,,..... .    ......                ....... .....  ....     .  ...        ...... .........,,,,,
+:::::::::,,,,:::::,::::,,:,,,,,,,.....  .. .... .                     .    ...     ........... .......   .......  ....
+::::::::::,,:,,::::::,,,,,,,::,,,,,,,,,.,,..,,...,...,..               ..  .....               ......   .. ...........
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::,,,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;
;......,..,,,,,,,:,,::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::;:;;;;;;;;;;;;;;;;
+......,........,,,,,,,,::::::::::::::::::::::::::::::::,:,,,,,,;,,,:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;
;..........,,..,,,,,,,,,,:::::::::::::::::::::: ::::,,,,,,,,,,,,+,,,,,,,,.,,,::::::::::::::::::::::::::::::::::::::::::
;...........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::;;;;;:..,,,,,,;;,,,,::,,,,::::::::::::::::::::::::::::::::::::::::::::
+,..........,..,,,,,,,,,;;:,,,,,,,,,,,,......,:**+++++++;:,.,,,++,,,,,,,,,,,,:::::::::::::::;+:::::::::::::::::::::::::
+::::,,:::,,,,,,,,,,,,,,,,,,,,,:;;;;+;,,,,,,,,,*#******++;;;:,.,;,,,,,,,,,,:;++;+;;+#::::::::::::::::::::::::::::::::::
+:::::::::::::,,,,,,,,,,,,,,,,,,,,,,+,,*####+*+;; *###***+:;;:;+###:##########,,*::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::,,,,,,,,,,,,,,,,####+,####*#####**########*;+,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::
+::::::::::::::::::::::::::,,,,,,,,:,,,,,#####,,#######**#########**,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::,,#:::::::::*###::::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::###:::::::::,###::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,::,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,.,,...............,,,,,....,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;..,,,,,,,,,............ .  ...............,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,......................,,..,,,,..            .........,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+...,,,,,,,,,,,,,,,,,,,.......................            ........,,,......    .         ...,,,,,,,,,,,,,,,,,::::::::,,
+:::::::,:,,,,,,,,,:::,,,,,,,,.......     ......     .          .... ..  .  .  ....     .  ...        ...............,,
+:::::::::::,:,,,,:::::,,:::,,,,,,,,,,....      ....                  .   ...   .....   ..... ..... . .....   .......  
+::::::::::::::,,:,,:::::::,,,,,,,:,,,,,,,,,................               ...  ..                 ....... . .. . .....
$#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::,,,,,,,:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::;:::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;
;.,.......,.,,.,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::;::::::;;;;;;;;;;;;;;
;..................,,,,,,,,,,:::::::::::::::::::::::::::::::::::+::,,,,,::::::::::::::::::::::::::::::::::::::;;;;;;;;;
+...............,...,,,,,,,,:::::::::::::::::: :::::,,:::::,,,,,+,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::;;:;::
;................,,,,,,,,,,,,,,,,,,,,,,::::::::;;;;;;:,..,,,,,.+;,,,,,,,,,::,,,,:::::::::::::::::::::::::::::::::::::::
;....,,.............,,,:;;;;,,.,,,,,,,..,,.,..***++++++;;:..,,,;+,,,,,,,,,,,,,,,,,::::::::::,;+::::::::::::::::::::::::
+,,::::::,,,,,,,,,,,,,,,,,,,,,,,#+;;++;:,,,,,,*#******+++;;::,.,:,,,,,,,,,,::+++++;;*::::::::::::::::::::::::::::::::::
+:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,+,###:#*+,+####***+;::;+*###.##########;,*,,,,,:::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::,,,,,,,,,,#####:*#+########*#########;*:,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::
+::::::::::::::::::::::::::::::,,,,,,,,,,*##*,,+#######**##########*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::,:::,,+,,;,:,,:+###,,:::,:,,,,:,,,:,,,,,,,,,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::###:::::::::###:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#:::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::::::,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+....,,,,,..............,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.......,,,,,................   ..............,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,....,,,,,,,,,,,,,,.....................,,.,,,,,,.          . ......,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+,,,,,...,,,,,,,,,,,,,,,.,,........,,... .........            ....,...,,,.. ...  ..,,..     ...,,,,,,,,:,,,,,,,,,::::::
+::::::::::,,:,,,,,,,,,,,,,.............      ....,...               .,.,,. ... .. ....      .         . .............,
+::::::::::::::::,,,,,,:::::,,:::,,,,,,,.... .     .                    ....  .... . .....  ...... . ..  . ...     ....
+:::::::::::::::::::,,,,,:::::::,,,,,,,,,,,.......... ............              ...                 ...,......... .....
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::;:::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;
;............,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::;::;;;:;;:;;;;;;;;;
;..............,......,,,,,,,,,:::::::::::::::::::::::::::::::::+::::::,,,,::::::::::::::::::::::::::::::::::::::;;;;;;
;...................,....,,,,,,::::::::::::::::::::,.,::::::::,:+,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::;;;
;...................,..,,,,,,,,,,,,,,,::::::::;;;;;;;;,..,,,,,,+;,,,,,,,,,,,,,:,,,,,,::::::::::::::::::::::::::::::::::
;.....................,,;;;+..,,..,,,,,,,....+#*++++*;++::,.,..++..,,,,,,,,,,,,,,,,,,:::::::::+;:::::::::::::::::::::::
+,,,,,,::::,,,,,,,,.,,,,,,,,,,,,#+;+;+;,,,,,,,##******+++;;;:..;,,,,,,,,,,,,:;++++;:+::::::::::::::::::::::::::::::::::
+::::::::::::::::::::,,,,,,,,,,,,,,,,,,*###+##*  #####**+*;;:;;###;*##########+,*,,,,,,,,::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::,:::::,,,,,,,:####*,######*####*#########;*;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::
+:::::::::::::::::::::::::::::::::,,,,,,+###+,,#######**#*##*##*###*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::,#:,,::,,,,####:::,,,:,,,,,,,,,,,,,,,,,,,,,,,,::,::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::###::::::::::###:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::
+::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,:::::,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,.....,,,.....,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;,,,........,,,,,...............   ..........,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.,,,.,..,,,,,,,,,,,,,,.. ......................,,,,,.         .....,.,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+.,,,,,,,,..,,,,,,,,,,,,,.............,,...  .........            ....,......   .. ..,,,....  ..,,,,,,,,,,,,:::::,,::::
+::::::::::::,,,,,,,,,,,,,,,,,,,.............. ..........           . .. ,,,,....,........               .......,....,,
+::::::::::::::::::,,,,,,,,::::,,:,:,,,,.......      . . .               . ....  .... .. ....  ......       . .....    
+:::::::::::::::::::::::,,,,::::::::,,,,,,,,..,..... .. ........  ...               ..                ....,............
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:;:::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;
;...........,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;
;. .......,..............,,,,,,,,,,,:::::::::::,.:::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;
;...................,.........,,,,,,,::::::::,;:::::.::::::::::;+::,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::
;........................,..,,,,,,,,,,,:::::,;;;;;;;:,..,,,,,,,+;,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
;......................,;;;;,,,,,,,,,,,,,,,,+**++++++++;:,..,,.++.,.,,,,,,,,,,,,,,,,,,,,,::::,;#;::::::::::::::::::::::
;....,....,.,,,,.....,...,,,,,,:#:;+;+;,,,:,,*#******+++;;;;:,.+,,,,,,,,,,,,,:;++++;;+:,,,,::::::::::::::::::::::::::::
+:::::::::::::::::::::::,,,,,,,,,,,,,,;####:#*+ *####***+ ;;::;###:*###########;*,,,,,,,,,,,,::::::::::::::::::::::::::
+::::::::::::::::::::::::::,,:,,,::,,,,####+,###########*#####*####;#*+,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::####*,,#######****#########*+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::,,:#,,,,,,,,:*###,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:::,:,:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::;###::::::::::###:::::::::::::::::::::::::::::,,,:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,:::,,::::::,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,.........,,,,........  ...... .....,,,,,,:,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+...............,,,,,,,,,,,... ......... .............,,,,........,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::
+,,.....,,,,,,,,,,,,,,,,,,,,,..................  ..........             .. ..     .......,,,,,,,,,,,,,,::::::::::::::::
+::,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.......................           .... ..,,,,..,,.. ...           ......,,,,,,,,,
+::::::::::::::::::::,:,,,,,,,,,::::,,:,,,,,,......  .    ...                 ............ ......    .......        ...
+:::::::::::::::::::::::::::,,,,,::::,::::,,,,,,,,,,........  ......                    ..    ...     .. ......,.......
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;:::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;::;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::
;    ........,,,,,,:::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::;;;;:;;;;
;    .  .......,............,,,,,,,,,,:::::::::..:::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.................................,,,,,,,,::.::::::..::::::::::,+:::::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::::
;............................,,..,,,,,,,,,,:,;;;;;;;:,,.,::::,,+;,,,,,::,,,,,,,,,,,,,,,,,,,.,,,::::::::::::::::::::::::
;......................:;;;;..,,,,,,,,,,,,,,+#*++++++++;,,..,,,++,,,,.,,.,,.,,,,,,,,,,,,:,,,,:,:,+:::::::::::::::::::::
;.................,,...........+*:;+++:,.,,.;#*******+++;;;;:,.:;::,,,,..,,.,,:;++++;;;:,,,,,,,,:::::::::::::::::::::::
+,,,,,,,::::,:,,::::::::,,::,,,,,,,,,,*###+##*  *####***+ ;;;;:###,*############:+,,,,,,,,,,,,,,,::::::::::::::::::::::
+:::::::::::::::::::::::::::::::,,,,,,*####*,###########*#####*####;###+:,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::*####,,#*#####*:*###########+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::
+:::::::::::::::::::::::::::::::::::::::::::::,,,,,,#,,,,,*####,,*:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::###;:::::::::,###::::::::,,::,::::::::::::::::,,,,,,,,,:::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::#:+::::::::::+:#:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,:,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,........,,........ ......,,,,......,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,.......,,,,......,,,,,,,,,...... .....    ...............,,,,.,,,,,,,,,:,,,::::::::::::::::::::::::::::::::::::::::
+,,,,,,.....,,,,..,,,,,,,,,,,,,,,.......................,...,,,..             ..........,,,,,,,,,,:::::::::::::::::::::
+:::::,,,.,,,,,,,,,,...,,,,,,,,,,,,,,,,,,,.......................           ........,,,,.....    .         ..,,,,,,,,,,
+:::::::::::::::::::::::::,:,,,,,,,,,:::,,,,,,,,,......     ......                .............  ....     .  ...       
+:::::::::::::::::::::::::::::,,,,,,,:::::,::::,,,,,,,,,.....    .....             .   ..   ...   ..,..   ....... ...  
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::,,,,::,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,.,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::;;;;
; ..          .......,........,,,,,,,.,,,,,,,,...:::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::::::::::::
;.....................................,,,,,,::;::::.,:::::::::::+;::::::::::::::::::::,,,,,::::::::::::::::::::::::::::
;...................,..............,,...,,,,;;;;;;++;,..,::::::;;:::::::::::::,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::
;......................;;;;:.........,,,,,,,***++++*+;;;:,..:::++:,,,,,,,,,,,,,,,,,,,,,,,,,,,::,, +::::::::::::::::::::
;........................,.....#;;;;+;,,,,,,*##******+++;;;;:..,+....,,,,,,.,..,;+++++;;+:,,,,,,,,,,,::::::::::::::::::
+,,,,,,,,,..,,,,,,,,,,,::::,,,,,,:,,,,+###:#*+.;####****+ ;;;;;###:;;+############,,,,,,,,,,,,,,,,,,,,:::::::::::::::::
+::::::::::::::::::::::::::::::::::::,####*#,#;########**#####*####+#######:,,,,,,,,.,,,,,,,,,,,,,,,,,,,,::::::::::::::
+:::::::::::::::::::::::::::::::::::::*###*+,,#######**###########**,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::#:,,*,,,,,*#######*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::###:::::::::::###:::::::,,,,,,,,:::,,,:::,,,::::,::,,,,,,,,,,:::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::#,+::::::::::+##:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.,,,,,,,,,,,:,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.......,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,.......,,,................,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,.,,,,,,,..,.....,,.......,,,,,,...............    ............,.,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::
+....,,,,,,.......,,,....,,,,,,,,,,,,,,......................,.,,,,,,..            ......,,,,,,,,::::::::::::::::::::::
+::::::::,,,,,,,,..,,...,...,,,,,,,,,,,,,,..,.........,,.............             ...,,...,,.......  ..,....   ...,,,,,
+:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,........... .     ....,,..               ...., ..... .. .,..            
+:::::::::::::::::::::::::::::::::,,,,,,,,:::::,,::,,,,,,,.....       .  .                 ....  .... .......  ......  
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,:,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,:::::::::::::::::::::::::,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::;::
;..             ................,,,,,,,,,,,,,, ..::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::
;.... ...    .............................,,+++::;:..:::::::::::+;:::::::::::::::::::::::::,,,:::::::::::::::::::::::::
;.................. .......................;;;+;;;;;:,..,:::::::++:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,:::::::::::::::
;   ...................;;;;,............,..+#**+++++++;;:,..:::+:;:::::,,,,,,,,,,,,,,,,,,,,,,,,,,.:+,,,,:::::::::::::::
;.............. ..............,*:;;++:...,,.###******+++;;;;:...+.....,...,,,,..,;+++++;;+,,,,,,,,,,,,,,,::::::::::::::
+.........,,,......,,,,,,,,::::,,,,.,+####,#+: *####****+ ;;;;;###:;;;+*##########+,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::
+::::::::::::::::::::::::::::::::::::,####*+,####**####**#####*####;*#######+;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::
+:::::::::::::::::::::::::::::::::::::*##+#,,########**###########*+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::#:::+::,,,*####*###,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::###:::::::::::##*:::,,,,:,,,,,,,,,,,,::,,,::,,,,,:,,,,,:,,,,,,,,,,,:::::
+:::::::::::::::::::::::::::::::::::::::::::::::#*:::::::::::###:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;......,,,,,,,,,,:,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;...........,,,,,,,,.,,,,,,,,,,.,,,,,,,,::::,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....,,,.....,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,....,.........,,,,....... .......    .......,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,...,,,,,,.......,,,.,...,.,,,,,,,,,,,... ......................,,,,..       ........,,,,,,,,:::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,...,,,..,,..,,,,,,,,,,,,,.............,,...  .........            ....,,....  . .....,,,,...  ..,,,
+:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,......................,...              . .,,,,...,......,..        
+:::::::::::::::::::::::::::::::::::::,,,,,,,,:::::,,:,,,,,,.......      . .                 ......   ... ....,...  ..,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:,,,,,,,,,,,,,:,,:,,::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::::::::::::::::,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,::::::::::::::::::::::::::::::,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
+,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::::::::::::::::::::::::::::::::::::
+,......                 ........,,,,,,,,:,::.,,.::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::
;..........  ..      .   ..................:+*+::::..,,,,::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::
; ........................................,;;;*+;;;;:,..,,::::::+;::::::::::::::::::::::,,,,,,,,,,,,,,,,:::::::::::::::
+..    .   ...........,;;;;................*#*+++++++;;;:...:::;++:::::::::::,,,,,,,,,,,,,,,,,,,,,:+:,,,,,,,,,,::::::::
+,...  .  ................... #;;;;++,,....*#*******+++*;;;;,...+;,.,,,,,,,,,,,.,:;++++;;+:,,,,,,,,,,,,,,,,,,,:::::::::
+:,,,...........................,,,,:;###+**: :#####****+ ;;;;;###:;;;+*##########*:,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+:::::::::::::::::::,,,::::::::::::::#####+:#*#########**#####*####;:+*#######*;,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::
+::::::::::::::::::::::::::::::::::::+#####::#*#####***############+;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::+:::::::#::*:::::+#########;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::,###:::::::::::##+::,:,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::###:::::::::::###:::::::::::::::::::::::::::::::::::::::::::::::::::,,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#:::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.........  ....,,,,,,,,,,,,,,,,,,,,,.,,,:::,::::::,,:,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::
+......,,,,,,,,,,,,,,,,,,,,,,..........,,,,...... .  ........ ....,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,...,,,,,........,.........,,,,,,,,,,... ......... .............,,,,,........,,,,,,,,,,,,,::::::::::::::::::
+,,,,,,,,,,,.,..,,,,,,,,.....,,,..,,,,,,,,,,,,,,,,................... ......,,..             ......    ......,,,,,,,,,,
+:::::::::::::::::::::::,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.......................          .. . ..,,,,...,,......    
+:::::::::::::::::::::::::::::::::::::::,::,,,,,,,,,,::::,,,,,,,,,....... .    ...                 ............. ..... 
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,::,,,:,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::,,,,,,,,,,,
+::::::::::::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::::::::::::,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,:::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::::::::::
+::::,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,:,,..............................,,,,::::.,,,.:::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::
; .............            .  .......,....,*#+*:::,..,,,,,,,:::::+;::::::::::::::::::::::::::::::::::::::::::::::::::::
+....   .......... ... ...................:;;;++;;;+:,,..,,,,,,,+;::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::
+::,,..    ...... ....:;;;;...............+##*++++**++;;:,...,,,++:::::::::::::::::,:,::,,,,,:,,,,:+;,,,,,,,,,,,,,,,,::
+::::::,,..          ......   #;:;;;+:.....**#*******++*;;;;:...++,,,,,,,,,,,,,,:;++++;;;+:.,,.,,.,,,,,,,,,,,,:,,,,::::
+:::::,,,.......................:...:####:#*+ +#####***++ ;;;;;###+,;;+*###########+,,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,:
+::::::::::::::::::::::::,,,,,,::::,,####**:#+#########**#####*####;+;+#########+,,,,,,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::+####*:########***############++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::+#::::::,#::#:::::+##########,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::;##*:::::::::::#*#:::::,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::###:::::::::::####::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#:::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;  .......,... . ..,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,...   ...............,,,,,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
+,,,........,,,,,,,,,,,,,,,,,,,,,,,.........,........ ......,,,........,,,:::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,...,,,,,..... ..,.........,,,,,,,,.............   ...............,,,.....,,,,,,,,:,::::::::::::::::::
+,,,..,,,,,,,,,,,....,,,,,,,,......,,,..,,,,,,,,,,,,,,,...........................,,...             . ... ....,,,,,,,,:
+:::::::::::::::::::::::::::,,,,,,,,,,,,,....,,,,,,,,,,,,,,,,,,,........................          ........,,,,...,,.  .
+:::::::::::::::::::::::::::::::::::::::::::::,,,:,,,,,,,,,::::,,,,,,,,......  .   ......                ............  
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::,,,,
+:::::::::::::::::::,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,:::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::::::::
+:::::::::::,,,,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::;::::::;::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::,,........,,,,,..........,,,,,,,, ::::,.::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::
;.....................               ..... +***;;::...,,,,,,,,,,,:+::::::::::::::::::::::::::::::::::::::::::::::::::::
;,,,,,,,,...   ...;....  ...   ...........:+++++++;+;:...........+;,,,,:::::::::::::::::::::::::::::::::,:,,,,,,,,,::::
+:::::::,,.     .......;;;;:..............*#***+++**+;++::...,,,;++,,,,,::::::::::::::::::::::,:,:+;,,,,,,,,,,,,,,,,,,,
+:::::::::::::,,..        . . **:;;;++:....*#******#*++*+;;;::,..*;,,,,,,,,,,,,;;++++++;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,::
+::::::::::::,,,................,... ####:##+ *#####****+ ;;;;:;###,+*##############:,,.,....,,:,,,..,..,,,,,,,,,,,,,,,
+:::::::::::::::::::,,,,,,,,,,,,,,,,,####**,###########**##########*+;+*####+###+;,,,,,,,,,,,,,:::,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::*####*:########################+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::+*:::::::#::*#:::::*########*:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::##*:::::::::::#,#:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::###+:::::::::::###::::::::::::::::::::::::::::::,,::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*:::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+...........,,,,,,,,,,,::::::::,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.....    ......,,,. .. ..,,,,,,,,,,,,,.,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;..,,,,,,...    ... ..... ......,,,,,...,,,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+,,....,,,,........,,,,,,,,,,,,,,,,,,,,,,,.......,,,........ ......,,,,,.....,,,:::::::::::::::::::::::::::::::::::::::
+..,,,,,,,,,,,,.,,,,,,,,,,..,,,,,.....  .,,,.......,,,,,,,..............   ...............,,,,,,,,,,,,:::::::::::::::::
+,..,,,,,,,,.,,,,,,,,,,,....,,,,,,,.......,,,...,,,,,,,,,,,,,,,.....................,,,..,,,,.            ........,,,,,
+:::::::::::,:::,,,::,,,,::::::::::,,,,.,,,,,.......,,,,,,,,,,,,,,,,,,........,...............           ........,,,,..
+:::::::,,:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,........     .......                .......
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::,,,,,,,,,,,,,,,:::,:,,,,,:,,::::::::,:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,
+::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::::::::::::::
+::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::;::;:;::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::;;:::::::::::
+:::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:::::,.:::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::::::::::
+..........................               ,:::*;;;;,,......,,,,,,,+;,,,,,::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,..  ,,... .  ..  ..     ... ;++++++;;;;::,..,......;++.,,,,,,,:::::::::::::::::::::::::::::::::::::::,,,,
+:::::::::::,,..    ...;;;;;..............*##**++++**+;;;:,...,.,+++,,,,,,,,:::::::::::::::::::,:++;;;,::::,,,,,,,,,,,,
+::::::::::::::::::,,..       ;*;:;;;+; ...#*******#**+++;;;;:,,..+,,,,,,,,,,:;+++++++;;*#:,:::,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::,,,................####;##+ *######***+;;;;:;;###+,##############;#,,.,,.,,.....,,,,,,.......,,,,,,,,
+:::::::::::::::::::::::,,,..,,,,,,,,####**,.###########**##########;++*########+;::,,,,,,,,,,,,,,,,:::,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::+#####,###################*####++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::*#:::::::#;:+#:::::**#######*#:::,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::#+#::::::::::::#*#::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::####:::::::::::####:::::::::::::::::::::::::,,,::,:::,,,::::::::,,:::::,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,............,,,,,,,,,,,::::::::,,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,.......    ..,....,,.    ...,,,,,,,,,,,,.,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.......,,.......    ....  ... ......,,,,,,...,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::
+,,,,,,,,,...,,,........,,,,,,.,,,,,,,,,,,,,,,,.......,,,,...............,,,,,,..,,::::::::::::::::::::::::::::::::::::
+,,,,,..,,,,,,,,,,,,,.,,,,,,,,,..,,,,,,..... ...,........,,,,................    .............,,,,,:,,,::::::::::::::::
+,,,,,,...,,,,,,,,,,,,,,,,,,,,,...,,,,,,.......,,,....,,,,,,,,,,,,,,......................,,.,,,,,..         .  ......,
+,,,:::::::::::,,,,,,.,,,,,,,,,,:::::::,,,,,,...,,........,,,,,,,,,,,,,,.,,........,,.............             ...,,...
+,::::::::::::,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,...............     ...,....               .
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::,,,,,,,,,,,,,,:::::,,,,,:::::::::::,,,,,,::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,:::,:,:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,:::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,:::
+::::::::::::::::::::::::::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::;;;;:::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,..::::::::::::::::::::*::::::::::::::::::::::::::::::::::::;:::::;:::::::
+,,,::::::::::::::::,,,,,,,,,,::::::::::::,:;:::::..:::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::::::::
+....,,,,,,,,,,,,.,,..,,,,,,,.....       .,::;+;;;:,,,........,.,,,+;,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,.+:.        ...       .. +*+++++++;+:;,,,,.......;++.....,,,,,,,,,,:::::::::::::::::::::::::::::::::::
;...,,::::::::::,,..   :;;;;,.... ........*##***+++++;+++::,...,..+++........,,,,,,,::::::::::,,;++;;;+:::::::::::::,,,
;..,::::::::::::::::::::::,,...#+:;;+;+ ...#***#*******+++:;:;:,,..+.......,:;+++++++;;+###,:::::::::::,,,,,,,,,,,,,,,,
+,,:::::::::::::::::::::::,,......   ####+:#*,+####**#**+*+::;++*###+,#############*,.+,,,,,,......,...,.,,,,,,....,.,.
+:::::::::::::::::::::::::::::,,,....#####*..*##########**###########;++*########+:,,,,,,,::,,,,,,,,,,,,,,,:::::,,,,,,,
+::::::::::::::::::::::::::::::::::::+#####,#*##################*###*++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,
+:::,,:::::::::::::::::::::::::::::::::*#:::::::*#::##:::::*#########+::::,,:,,,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::#:#::::::::::::::#:::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::###:::::::::::,###::::::::::::::::::::::::::::,:::,,,,,:,::,,,,,,,,,:::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::;::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,.,,,,,,.,.,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,...... .....,..,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,.............   ... ......... .......,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,,,,,,,,,,,,,,:::::::::::::::::::::::::::::
;....,,,,,,.,,,,,,...,..........,,,,....,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,,,,.....,,,,,,,,,,::::::::::::::::::::::::::::
+,,,,,,,,,,,,,....,,,,,,,........,,,,,,.,,,,,,,,,,,..............,,,,......... ......    ........,,,,,,,:::::::::::::::
;.,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,....,,,,..........,.......,,,,,,,,,,,... ......................,,,,,.   .......,,
+::,,,,,,,,,,:,::::,,,,,,.....,,,,,,,,,,,,,,,,.,,,,.....,,..,,,.,,,,,,,,,,,,...............,,... .........             
+::::::,,,,:::::::,,:,,::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,...... ..............,...         
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,:::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::;:;:::::::
+::::::::::::::::::::::::::::::::::::::::::::  .,:::::::::::::::::::;*:::::::::::::::::::::::::::::::::::::::::::::::;;
+,,,,,,:::::::::::::::::::::::::::::::::::,:;;::::,.,:::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::::::::
;.........,,,,,,,,,,,,,,,,,,,,,,,.........,:;;;;;;::,,..,.......,,,:+;,::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,............+........   ............+*+++++++;;+;:,,,.,....,.+:+......,.,,,,,,,,,,,,:::::::::::::::::::::::::::::
+....        ......,,.:;;;;;.,..     .. ..*##***++*+#*+;;;;:.......+*...............,,,,,,,::::,:++++;;+:::::::::::::::
+,........,::::::::::::::::::,##:;;;+++ ...*********#**+*+;;;;;:,..,+.......,:;+++++++;:+###;::::::::::::::::::,,,,,,,,
;. ....,,,:::::::::::::::::::::::,,,.####+:#*.+######****+;:::;;+####:###############,:+,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,.
+:::::,:::::::::::::::::::::::::::,,.#####+..*###########**#####*####++.,;##########;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,
+::::::::::::::::::::::::::::::::::::######.#########################+*,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::
+:::::::::::,::::::::::::::::::::::::::###:::::::#:###::;*###########*:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::#:::::::::::::###:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::,####:::::::::::####:::::::::::::::::::::::::::::,,,,,,:::,,,,,,,:,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+:*::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::,,,,,,,,,,,,,,,..... ......,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::
+::::,:,,,,,,,,,..........     ............  ....,,,,,,,,,,,,,,,,,,,,,,,,,:::,:::::::::::::,,::::::::::::::::::::::::::
+,,,,.......,,,,,,....,,,..,,,..    ...............,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::
;   ....,,.....,,,,,,,.....,,,,,........,,,,,,,,,,,,,,,,,,,,,,.........,,,,,........  .............,,::::::::::::::::::
+... ...,,,,,,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,....,,,,...... ...........,,,,,,,,,,.... ......... .............,,,,......
+,,,,,,,....,,,,,,,,,,,,,,,,,,,,..,,,,,,,,,,.....,,,,,,,,.....,,,...,,,,,,,,,,,,,,,................... ......,,,...    
+,,:::::::::::,,,,,::::::,,:::::::::::::::::::::::::::::,,,,,,,,,,,,,....,,,,,,,,,,,,,,,,,,,,................,......   
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,:,:,,,,,,,,,,:::::::,,,,:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,
+::::::::::::::::::::::::::::::::::::::::::,,,:,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::  .:::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::;;;;
+::::::::::::::::::::::::::::::::::::::::: :;:::::..:::::::::::::::::++::::::::::::::::::::::::::::::::::::::::::::;:;;
; .............,,,,,::::::::::::::::,,,,,,::;;;;;;:,:,,.:,,,,,,,,,,,:+;::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,.   .... ...,,,,,...,,,.,,......,+++++++++;++:,,,,..       +; ...........,,,,,,,,,,,,,,,::::::::::::::::::::::
+,,,,,,,...   ...,,,;;;;;,.:,,,,,,,..     *#***+++++**+;;;:,,,... .;++....................,,,,,,,,.++++;;+:::::::::::::
;........        ..,,:::::::*+:;;;++:.    ;*#*********++*+;;:;:,,,..++..........,;+++++++;;*#:,,,,,::::::::::::::::::::
+.....    ........,,::::::::::::#::*#####:#+  *######****+:+;;;;;*###:;+*###############:,,,,,,,,,,,,,,,,,,::::::::::::
+:::::::,,,,,,.,,,::::::::::::::::::*####*+..###########***###########;+ ..###.#,:;++*.....,,,,,,,,.,,,,,,,,,...,,,..,.
+::::::::::::::::::::::::::::::::::::######,#########################*++.,,:::,,,,,,,,..,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::,####;::::::#####:###########+*##*::,,,::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::,::::::::::::::::::::::::::::#::::::::::::#####:::::::::::::::::::::::::::,::::,,,,,,,,,,,,:,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::*###+:::::::::::####:::::::::::::::::::::::::::::::::::,,,,,,,,,,:,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::#,#::::::::::::#;#;::::::::::::::::::::::::::::::::::::::::::::::,:,::
+:::::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::;;;;;;;;:;;::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::,:,:,:,::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::,,:,,,,,,,,,,,,,,,,,,.............,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::,,,,,,,,,,,,,.......    ..,,..,,,,.   ...,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::
+::::::::::::,,,,,,,,,,............. ....    ........ .......,,,,,,..,,,,,,,,,,,,,,,,,,:::::,,,,,,,,,,,,,::::::::::::::
+,,,,,,..............,,,,,,.,,,,,...,,..........,,,,...,,,,,,,,,,,,,,,.,,,.,,,,,,,..............,,,,,,,,,,,::::::::::::
+,,,,,..... ..,,,,,,,,,,,,,,,...,,,,,,,,,,,...,,,,,,,,.,,,,,,..,,,.....,........,,,,,...............    ..........,,,,,
+,,,,,,,,,,.......,,,,,,,,,,,....,,.,,,,,,,,,,,,,,,,,,...,,,,,,.......,,,.....,,,,,,,,,,,,,..  .....................,,,
+,,:::::::::::::::::,,,,,,,,,::::,,,,,,,.....,,,,,,,,,,,,,,,,,,,,,,....,,...,...,,,,,,,,,,,,,.............,,...........
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::;::
+::::::::::::::::::::::::::::::::::::::::: ::::::,.::::::::::::::::::;+;:::::::::::::::::::::::::::::::::::::::::::::::
;.......,,,,,,,,,,,,::::::::::::::::::::::.:;*;;;:::,,.,:::::::::::::++::::::::::::::::::::::::::::::::::::::::::::::::
;....    ..... ........,,,,,,:,:::,:::::::+++++++;;;;;,,,,.,........:+;......,,,,,,::::::::::::::::::::::::::::::::::::
+,:::::::,,::,,,,;;;;;...................+*#***+++++*+++;::,:..,   .+;+ .......,............,,,,,,,,,,,:++;,:::::::::::
+,,,.  .....,,,,,.        ;:;;;+:....,,,,,*##********+*++;;;::,,,,.:+*+...............:;++;+++;+:..,,,,,,::::::::::::::
+,,,,,,,,,,,,,,,,..    ..,::::::####*+##+,++  #####***#**+;:+++;;;*##,++;;;;;;;*##########;..,,..,,,,,,,,,,::::::::::::
+,::::::,,,,,..   ....,,,:::::::::::*####+++*###########***###########;+*#+######,.............,,,,,,,,,.,,,,,,,,,,,,,,
+,,:::::::::::::::::,,,:::::::::::::+####**:###*######################++###;......,,...........,...,,,,,,,,,,,::,,,,,,,
;..,,::::::::::::::::::::::::::::::::+####*:*##################*######**,.,,,,,,:::::::,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,:::::::::::::::::::,::::::::::::::::::::::#:::::::::::*######**:::::,,:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::,#*#:::::::::::::#*#::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::####::::::::::::####::::::::::::::::::::::::::::::::::::::::::,,,,,,,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::,:,,,,::::,::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::,,::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::,:,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;::;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::,,,,,,,.....,,,,,,,,,,,,,,,,,,:,,:,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::::::::,,,,,,,,,,,,,,,....... .....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,::::::::::::::::::::::::::::::::
+,,,:::::::::::::::::,,,,,,,,,...........    .......,..    ..,,,,,,,,,,,,,,,,,,,,,,,,.,,,::::::::::::::::::::::::::::::
+,,,,,:::,:,,,,,,,,,,......,,,,.......,...,,...    ...  .... .....,,,,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+,,,,,,,,,,,,.     ...... ....,,,,,,,......,,.........,,,,,,,,,,,,,,,,,,,,,,,........,,........ ......,,,.......,,,::::
+,,,,:::,,,,,,,... ..,,,,,,,,,,,,,,...,,,,,,,,,,,,,,,,,,,,,,...,,,,,..... ............,,,,,,,,............... .........
;..   ..,,:::,,,,,,,,,....,,,,,,,,,,,.,,,,,,,,..,,,,,,,,,,,....,,,,,,,,......,,,..,,,,,,,,,,,,,,,......................
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::,:::::::::,::::::::::::,::::::::::::,,,,,,,,,,::::::::::::::::,,,,,,,,,,,,
+,,,,,,::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;*::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::.,:::,.:::::::::::::::::::::++::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::,+#**;;::;,,.,::::::::::::::::*;::::::::::::::::::::::::::::::::::::::::::::::
;......... .........,,,,,,,,,,,::::::::::,;;;+;;;+;:;::,..,:::::::::::+;:::::::::::::::::::::::::::::::::::::::::::::::
+,,::,,,,,.......+.....   .......,,,,,,,,+**+++++*++;;;::,::,.. .    +++     ...........,,,,,,,,::::::::::::.;++:::::::
+:::::::,,,,,:::::,,,;;;;;;..............+##********+**+++;:::,,.,.  +++          ............:++;+;;;+,,,,,,,,,,,:::::
+:::::::::,,,.. . .......,...;#;;;;;;+,....***#*#***#**+++;:;;:;;:,, .+:,:;;+++++++++;;+#######.............,,,,,,,::::
+:::::::,,,,,,,,..,,,,,,,,......#,,,;####;,#+;*#######****++:;++######+:##############....*............,..,,,,,,,,,,:::
;.,,,,,,,,,::::::,,,,,...   ...,,,::###*#*++:############***###########;+ .:##########+,.................,,,,,,,,,,,,,,
;     .....,,:::::::::::::::::,:::::*######;##########################*++.................,,,,.........,,,,,,,,,,,,,,,,
;    ... ...,,::::::::::::::::::::::::####;::::::######:;##############*::,,,,,,,:::::::,::::::::,::::,,,,,,,,,,,,,,,,,
+,,,,,,,...,,,,,:::::::::::::::::::,,::::::::::::,#:::::::::::::####:+:::::::,:::::::::::::::::::::::::::,,,,,,::,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::####::::::::::::####*::::::::::::::::::::::::::::::::::::::::::::::::,,
+::::::::::::::::::::::::::::::::::::::::::::::::#:#::::::::::::::#:*::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,::::::::::,,,,,,:,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::,:::::::::,,:::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::,,:::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,:::::::::::,,,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,::::::,::::::::::::::::,,,,,,,,,,,,,,,,............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::
+,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,...........     ...........   .....,,,,,,,,,,,,,,,,,,,,.,,,:::,:::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,.......,,,,,.....,,...,,...    .............,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;...  ..,,,,,,,,,,,,,,.     ....., ....,,,,,.......,,,,.........,,,,,,,,,,,,,,,,,,,,,,..........,,,,......... .........
+..   ...,..,,,,,,,,,,,,,..  ...,,,,,,,,,,,,...,,,,,,,,,,,,,,,,,,,,,,...,,,,,..................,,,,,,,,,,............. 
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::,,,,,,,,,,,,,,,,,,,,:,,:::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,:::::::::::::::::::::::::::
+::::::::,,,,:::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:,,:::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::.,,,,,,:::::::::::::::::::::+*;:::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::,+##*;:;:,,..:::::::::::::::::++::::::::::::::::::::::::::::::::::::::::::::::
+.........   ....,,,,,,,::::::::::::::::::;;;;;;;;;:;::,,.,:::::::::::;+;::::::::::::::::::::::::::::::::::::::::::::::
;..         .... . .      ............,,.**++++++++++;;::,::,..,,,,,,,+:+,,,,,,,,,,,,,,,,,,,,::::::::::::::::: :+::::::
+::::::::::::::::::;:;;;;.,,,,,,.    ....*##****++++#*+;++;+::,,,,...;+*+                   .. .,++;;;;;;,,,.,,,,,,,,,,
+:::::::::::::::,,,,.....,,,#;:;;;;+;,.,,,************++++;;;;:;::,,,,++:  .,:;++++++++;;+#######................,,,,,,
+:::::::::::::::::,,,,,.........,. #:####:#*:;#######*****+.;;;;;;*####:################...+...................,...,,,,
+,,,,,,::::::,,,,.,,,,,,.....    ...#####*+#;############***###########++; . ##:,#+**####*......................,,,,,,,
;......    .,,,,,,,:::::::::::::,,,,######*############################+*;... .......... .........................,,,,,
+,,,,,..   .  .  . .,::::::::::::::::#**###:::::*######;#*######*##+#*#**,,,...,.,,,...,,.,,,,,,,,:::::,,,,,,,,,,,,,,,,
+...,,,,,,,,.........,,,:::::::::::::::::::::::::,#::::::::::::*######:::::::,,,,:::::::::::::::::::::::::::::::,,,,,,,
+::::::::::,,::,,,,,:::::::::::::::::::::::,::::####::::::::::::,####::::::::::::::::::::::::::::::::::::::::::::::::::
+,,:::::::::::::::::::::::::::::::::::::::::::::,###*::::::::::::####::::::::::::::::::::::::::::::::::::::::::::::::::
+,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,::::::::::,:::::,::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::,:,:::::,::::,,::::::,,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::,:::::::::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,::,:,::::::::::::::::::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.,,,,,,,,,,,:::,,,::::::::::,::,,,,,,,,,,,,,,,,,,,............,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::
+... ..,,,,,,,,::,,,,::::::::::::::::,,,,,,,,,,,,,........   ...,..,,,,..   ..,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::
+,,,,,.,,,,,,,,,,,,,,,:::::::::::,,:,,,,,..,,,,.................    ....  ... ......,,,,,,,.,,,,,,,,,,,,,,,,,,,::::::,,
;..,,,,.....  ..,,,,,,,,,,,,,,...............,,,,,.,,,,,....,,.........,,,,,,.,,,,,,,,,,,,,,,,......,,,,...............
+,,,,,,,,,,.....,,,,,,,,,,,,,,..... ..,,,,,,,,,,,,,,....,,,,,,,,,,...,,,,,,,,,.,,,,,,.........,,........,,,,...........
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::,,:,:,,::::,,,,:::::::::::::::::::::,:,,,,,,:::::::::::::
+,,,,:::,,,,,,,,,,,,,,,,,,,:::::::,,:::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::
+,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,::::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::
+:::::::::,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+*:::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::: ,:::::,.:::::::::::::::::::::::*:::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::,+#+*;;:::,,..,::::::::::::::::;+;:::::::::::::::::::::::::::::::::::::::::::::
+,,:,,,,,,,,,,,,,,,,,,,,:::::::::::::::::;;;*+;;;;+;:;:,,..::::::::::::+;;:::::::::::::::::::::::::::::::::::::::::::::
;   ..........  .....................,,,**++++++*+++;;++;,::,,.:::::::;+;+:::::::::::::::::::::::::::::::::::,+#+::::::
;,..  .....,,,,,::;:;;;+,.,,.....   ....*##****+**++*++*;+;;::,,,,.,,,++*,,.. ..              .:++;;;;;+....,,,,,,,,,,,
+:::::::::::::::::::::::::,*+:;;;;++:,,,,#***#*********+++;;;;:;;:,,...*+.,:;+++++++++;:+#######*  ....................
+:::::::::::::::::::::::::::,,,#. +#####+,*;:#######*****++::;;:;+*####:.###############....,..........................
;..,,,:::::::::::::::::::,,,,,,,,..*#####+*..############***###########+++.. ##+.;#***#####............................
;          .........,,,,,,,,,,:::::+####***##.##########################++:,,..           ......   ....................
;.,.,..,,.....,,.      .,....,::::::######,,,,,;#######*########*##+#*#***:,,..............................,,,,,,...,..
+,,,,,,,,,,,,,,,.      ..  ...,,:::,:::::::::::::*#::::::::::::*######*::::::,,,,,,,::::::::::,,,,,::::::::::::::::::::
+,,,,,,,,.,,,,,,,,,,,,,,,,..,,,,,,:::::::::::::,####:::::::::::::####::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,:::::::::::::::::::::::::::::::::::::####::::::::::::::###*:::::::::::::::::::::::::::::::::::::::::::::::::
+.,,..,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:::::,:,:,,,,,,,,,,,::::::::,,:,,,:::,:::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;       ....,,,,,,,,,,,,,,,,::::::::::,,,,,,,,.....,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::
;       .........,,,,,,::::,,,,,:::::::::::::,,,,,,,,,,,,,,,,..... . ....,,.,,,,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::
;  .....,.,,.....,,,,,,,,,,,,,,,:::::::::::::,,,,,,,,,,,,..........     ............. ......,,,,,,,,,,,,,,,,,,,,,,,::::
; .  .......,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........,,,,,....,,....,,... .............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;      .....,,,,......  ..,,,,,,,,,,,,,...    ....,......,,,,,.......,,,,........,,,,,,,,,,,,,,,,,,,,,,..........,,,,,.
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::
+:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,::::::::::::::
+,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::. .,::::::::::::::::::::::::::;*::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::.:::::::,..:::::::::::::::::::::;*;::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::;**;;;;+;:,..,::::::::::::::::+*;::::::::::::::::::::::::::::::::::::::::::::
+,,,,::,::::::::::::,,,,,,,,,::::::::::;+++++*++;;;;:::,,,..:::::::::::;+;:::::::::::::::::::::::::::::::::::::::::::::
;   ...........+................  .....****+++++++++++;;;:::,,,.:::::::+;+:::::::::::::::::::::::::::::::::,;++;:::::::
;                  :;;;;+,. ,,...      .###*********+**++;;;;:,,,,,,,:;+**:::::::,..........:++;++;;;+..........,,,,,,:
;......,,,:::::::::::::::::+#;:;;;;;+. ,.#***#*##****#++++;:;::;;;,,;:.,+++++++++++;;;+#######*#,           ......,....
+,,,,,::::::::::::::::::::::::::::;#####:++,+########******+:;+########;:##############,    ,..........................
;.....,,,,,,:::::::::::::::::::::::#####*+#.,###########****###########*;+::,.#+*##+#####*:.     ......................
;              .........,,,,,,,,,,.#####*###,#####;###############*#####+++,::::::::,,.           .......   ...........
+......    ... ..........     ..,,,,+#*###,,,,,;#######;*###########**#***:::::::::,,,......... .....................,,
+,,,,,,,,,,,,,,,,,,,,,,,..      ..  ..,::::::::::#;:::,:::::::::#####**;::::::::::::::::::,,,,::::,,:,,,,,,,:::::,,::::
+,,,,,,,,,,,.,,,......,,,,,,,........,,,,,,::::####;:::::::::::::####::::::::::::::::::::::::::::::::::::::::::::::::::
+,,.,..,,,,,,,,,,,:::::::::::::::,::::::::::::::####:::::::::::::,####:::::::::::::::::::::::::::::::::::::::::::::::::
;......,,.,,,.,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.........,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,,,:::,,,::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::,::::::,::::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+........  ........,,,,,,,,,,,,,,,,,,,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::
;                ........,,,,,,,,::,,,:::::::::::::::,,,,,,,,,,,,,,,,.............,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,
;           ..............,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,..........     ..........    ..,.,,,,,,,,,,,,,,,,,,,,
;              ...........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,,,,.......,...,,...    ...  ...........,,,,,,...,,,,,,,,
;    ...........  ..,,,,......  ..,,,,,,,,,,,,,,.      .....  ....,,,,,,......,,,........,,,,,,,,,,,,,,,,,,,,,,,,......
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,:::,,,,,,,,,,,,,
+::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,
+:::::::,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:,,,,,,,,,:::::::::::
+,,,,,,,,,,,,,,,,:,:,,::::::::::::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,::,,,,,,,,,,,,,,,,,,,,,,,,::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:,:,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,:::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::;:::::::::::::::::::::::::::::::::::::::::::
+::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::;+:::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::,,,,,,::::::::::::::::::::::::::::::::::;*:::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::: .,,,.::::::::::::::::::::::::::;*;:::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::;:;...:::::::::::::::::::::+*::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::,::;;;;;;;::;,,,..,:::::::::::::::+*;::::::::::::::::::::::::::::::::::::::::::::
+..,,,,,,,,::::::::::::::::::,::::::::+++++++++++;+;::;;,:,,.::::::::::,+;+::::::::::::::::::::::::::::::::::::::::::::
;       .....,;;+,.,,,,,,,,,.,........*#***++++++#*;++;++:,;,,,,.::::::++**:::::::::::::::::::::::::::::::,:++;;;;:::::
;                    ;:;;;+,..         *##*********++#+*;;;;;::,,,,,:,.++*:::::::::::::,,,:;++;+++;;+;,,,,,,,,,,,,,,,,,
;          . .  .,,,,:,,,::,+#*:::;:++,:**;*###*********+:::;:::;;;:*+,:*++++++++;:;+###########,...                ...
;    ....,,,,,,:::::::::::::::#:::#####+:#+**########*******###########+:##############.     +..     .  ...............
;        ...,,,,,:::::::::::::::::###*#*+**:############****###########*;+:.,;##########*,   ..........................
; , .                ...,,,,,,,,,,*########,,##########################*++#+:::::::::::::::::,..          .............
+,,,,,,,,.              ..   ....  #+###*...,,,,#######:##**########+###**:::::::::::::::::,,,.........................
;  .,.....,.,,,,,,,,,,,,,,,.,,,,,..   . ......,,:#::::;,:::::::,######*;::::::::::::::::::::::::::,,,,,,,,,,,,,.,.,,,,:
+,,,,,,,,,,,,,,,,,.,,,,,,.,,...,,,,,,........,,####::::::::::::::####::::::::::::::::::::::::::::::::::::::::::::::::::
+,,.,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::,:,,,,::####:::::::::::::,####:::::::::::::::::::::::::::::::::::::::::::::::::
; .............,,,.,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; .    ...........,.,,.,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,,,,,,::::,,:::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::,::::::::::::::::::::::::::::::::::::::,,::,,,,:::::::,:::::::,,,::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::,,,,::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,,::::::::::::::,:,,,,,:::::::::::::::::::::::::::
;                         ....,,.,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,,,,.............,,,,,,,,,,,:::::::::::,::::::
;                    .............,,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,..........    ......,,,.... ..,,,,,,,,,,,,,,
;                    ........,,,,.,,,,,,,,,,,,,,,:,,::::::,,:,,,,,.....,,,,.......,........    ....  .........,,,,,,,..
+..........     ..............,,,......  ..,,,,,,,,,,,,,,. ... ...........,,,.,,,,,....,,.........,,,,,,,,,,,,,,,,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,::::::,,
+::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::,::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::,,,,,,,,,,,,,,,,,:,::::,::,::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::,::,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::::::::::::
+,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::;;:::::::::::::::::::::::::::::,,,::::::::::
+::::::::::,,,,,.,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::;*::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,::::::::::::::::::::::;*;::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::: :::::,,.::::::::::::::::::::::::::+*:::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::+###*;:::::,...:::::::::::::::::::::*;:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::,;;;;;;;;;;+:;;:,,..,:::::::::::::::+;;:::::::::::::::::::::::::::::::::::::::::::
;...,,,,,,,,.,,,:::::::::::::::::::::+*+++++++++*+;++::;,:,,..::::::::::++;*:::::::::::::::::::::::::::::::::::::::::::
;             .::;;+.,,.,,,,,,,,,,,,,*##***+++++++*+*;*++;:::,,,,.,:::::+;*::::::::::::::::::::::::::::::,,++++;;;+::::
;                      ;:;;;;+,.......*##***********++*+*;;;;;;:,:,,,,:;+**,,,::::,,:::,:;+++++;++;;+,,,,,:,:::::,:,,,,
;                         .,,####+:##*:;* +#####****#***++;,++++++;*##+,*+++++;;;;+*############:.,,...,... .          
;              ....,,,,,,,:::::::*#####;+*##*########*******###########+:+#############,,,,,,,;.      . ..   ...  .. . 
;                 ...,,,,::::::::######***::#############**############*+++#+*######*###+:::,.. .      ....  ..........
;                           ..,,,+####**##*::#####################*#####**++:.,::::::::::::::::::::::,,.         ......
;        ..,,,,,..                 #####........#######,+#***#######*####**,,,,,::::::::::::::::::::,,,.... ...........
;           .,,,,.,,,,,,,,,,,,,,,.,,..,.,,...... #....:.,:::::::;*####*:;::::::::::::::::::::::::::::::::,,,......,..,,
;...,,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.... ####.....,,,,:::::####::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,:####,,,,,,,,::::::####:::::::::::::::::::::::::::::::::::::::::::::::::
;   . .     .....,.......,,,.,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,......         ...........,,..,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,...   .....,,...,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::,,,,,,,,,::::::::::::::::,,,,,,,::::::::::::,,::,,,::,::::,:::::::,,:,::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,,::::::::::::::::::::::::::::::::::::::::::,,::::::::::::::::::
+,..........   ..                  ....,,,,,,,,,,,,,,,,:::::::::::,,,,,,,,,,,,,,,,,,,,,,..,,,,.....,,,,,,,,,:::::::::::
+....                           . ..........,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,..............,..,,,,,......,,,,,
;..    .....                 ........,,,....,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,.............   ..  ................
; .  ...........          .. ..   .............,...,,,,,,,,,,,,,,,,,,,,..........,,,,,...,,,,...,,.......,.,,,,,...,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,
+::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,
+:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,
+::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::::,:::::
+,,,,,,,::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,,,,,,:::::::::::::::::::::::::::,,,,,,,,,,:,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::;+::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::;;:::::::::::::::::::::::::::::::::::,,,,,,
+:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::;*:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::,    ,,,,,,,,,,,,,,,,,,,,::::::::::+**:::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::,::::::::...::::::::::::::::::::::::::*;:::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::+;#**:;;:;::,,,..,:::::::::::::::::::;+;::::::::::::::::::::::::::::::::::::::::::
+,,::::::::::::::::::::::::::::::::::;;;+*+;;;;;;;;:;,,,,..:::::::::::::::++;::::::::::::::::::::::::::::::::::::::::::
;      .....,;:.,,,,,,,,::::::::::::+**+++++++*++;+;+++::,,:,...:::::::::++;*::::::::::::::::::::::::::::::::::::::::::
;               .::;;;;,....,,,,,,,,,*##****++++++*+*+*;++;:::,,,,..,::::++**::::::::::::::::::::::::::::::,:++;;;;;+::
;                        ;;:;;;;+:....*#*************++**++;;;:;:::::,,,;+**;,,,,,,,,:,,:++++++++++;;+;::::::::::::::::
;                            #  #+####:+..*####****#****++; ;;;;;;++###:.#++;;;;;;+##############*,,,,,,,,,,,,::,,... .
;                           ....,######;*#:*##########***+**############::#############* ...............     . ........
;                           ...,,######*#;::##############**############*++*+*#######*##;.   ........,..........    ...
;                               .+########,,,;####################*####*++++++.......   .,,:::::::::::::::::::,,..     
;                     .,,..        ###**  ......##+####,.+#***######**##****,.,........,,,:::::::::::::::::::::::,,,.. 
;                    ...,,,,,,,,......   ........#......     .,..,*####*:#:::::,,,,,,,,,::::::::::::::::::::::::::,,,,.
;                       .,,....,,,,,,,,,,,,,,,.####.,,..     ... #####:::::::,:::::::,,::::::::::::::::::::::::::::::::
;....,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.####,,,,,,,,......#####,:::::::::::::::::::::::::::::::::::::::::::::::
;             ...............,,......,,,,,,,,,,,,,:::::::::::::,:,:::::::::::::::::::::::::::::::::::::::::::::::::::::
;   ....    .......        ..........,,..,,.,,,,.,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.,,,,,,,,,,,,,,,,,,,,...      ..........,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,::,,,,,,:,:,,::::,:::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:::::::,,:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,:::::::::::::::::::,,:::::::::::::::::,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::
;........,,,,,,,,,,,,,,,,............         .....,,,,,,,,,,,,,,,,::::::::::,,,,,,,,.....,,,,,,,,,,,,,,,,,,,,,,,,:::::
+,.........,,,...                              ........,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,,,............,,,.,,,,
+,,,,,,,,,...........                     ..............,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,..........     ........
+,,..... .        ..... ...                  ............,,,,,,,,,,,,,,,,,,,,,,,,,,,,.......,,,,,.....,,...,,,..    ...
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,:::::::::::::,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::,,::
+::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::
+,,,,,,,,,,,,,::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::;;:::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::;+:::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::;;*:::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::,,,,  .... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;*::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::,:;;::::::,...::::::::::::,,,,,,,,,,:::;**::::::::::::::::::::::::::::::::::::::::
+,::::::::::::::::::::::::::::::::::,:::;*;;;;;,:,,,,...::::::::::::::::::::+*;::::::::::::::::::::::::::::::::::::::::
;.,,,,,::::::::::::::::::::::::::::::+++++++++;;+;+,;;:,,,..,::::::::::::::++;*::::::::::::::::::::::::::::::::::::::::
;     ......:;;+,,,,,,,,,:::::::::::****++++++*+++*+++;+;:::,,,..:::::::::;+;*:::::::::::::::::::::::::::::::::::::::::
;                  ;:;;;;..,,,,,,,,,:##******+++++*+*++*;;;;:::,,,,...::::++**::::::::::::::::::::::::::::::,,+++;+;;;+
;                         ;+::;;;;+:,.*#***********++++**++;;;::;::,:;,,.:++**,,,:::::::,,;;+++++++++;;*+::::::::::::::
;                            +  .+####;+;;#####**********+; :;;;;;;;###+:,++++;;;;;+*##############+,,:::::::::::::::::
;                                ######+*#+ #########*****+*############*::##############*,,. ...*.....................
;                               ,#####*++#,,:###########*#**#############;+++***###########+,    ...,,,,,,,,:,,,,::,,,,
;                                +####*##+..,,##########################*+*+**;,,,.........         .,,:::::::::::::::,
;                                 .####*    ...  #+#####,;#*#*######***#*****:,,,,,.....    ........,,:::::::::::::::::
;                               .,,,,,,..   .... #:    +     .... #*####**;,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::
+....,..                           .,,...,,,,,,#####,,,..,...,,,,.##*#;  .  . .,::,:::::::,::::::::::::::::::::::::::::
;              ..........,,,,,,,,,,,,,,,,,,,,,,,####+,,,,,,,,,,,,,;####*........,,,::::::::::::::::::::::::::::::::::::
;....        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::*:*,,,,,,,,:::::::::::::::::::::::,::::::::::::::::
+....                               ........ ...,,..,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:,,,..  ..   ...,.,,,,,,,,...,.. .      ...........,,.,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::,,,,,,::::::,,,,,,,,,,,,,,,,........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::,::::::,,,:::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::,,,,,,,::::::::::::::::::,,::::::::::::::::::::,:,::,::::,::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:,,,,:::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,...,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,....,,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::,,,,,,,,,,,,,:,:::::::::::::::::
+.,,,,,..............,,,,..                               ....,,,,,,,,,,,,,,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,.........
;.....,,,,,,,,,,,,,,........                           ............,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,,.......  
;   ....,,,,,,,,,,.......       .                    .......,,,...,,,,,,,,,,,,,,,:::::::::::::,,,,,...,,,,,........,...
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::
+,,,,,,,,,::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::,:,::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,,,,::::::::::::::::::::::
+::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::;;:::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,::::::::::::::;+:::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,:::::::::::::::;+::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::;;*::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::: .,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;**,,::::::::::::::::::::::::::::::::::::
+,,,:::::::::::::::::::::::::::::::: :::;:::::::....:,:::::::::::::,,,,,,,,,,++*;,,,,,,::::::::::::::::::::::::::::::::
+,,,,,,,,::::::::::::::::::::::::::,,::;;*;;;;;:::,,,....::::::::::::::::::::+*;:::::::::::::::::::::::::::::::::::::::
;... .....,,,,,::::::::::::::::::::,+++++++*++;;;++:;:;:,:....::::::::::::::++;;:::::::::::::::::::::::::::::::::::::::
;           :;;;+..,,,,::::::::::::+***+++++++++++*++;;+::;,:,,,..,:::::::::+;;*:::::::::::::::::::::::::::::::::::::::
;                  .::;;;:........,,*##*****++++++*+#*++++;+:::::,,,,..::::++***::::::::::::::::::::::::::::::,:++++;;;
;                          #,::;;;+;.****************+++++;;;;;;:;::::;,,.,;+**,,,,,:::::,:;++++++++++;;++:::::::::::::
;                            +   #####+  +####***********+;, ;;;;;;;:###+,++++;;;;:;;+###############:,,,,,,,::::::::::
;                               *#####*#### #*#######*****+*#######*#####+:;###############...   .:..    .......,,,,,,,
;                               +#####+*##   #############***############*++++***############*+:,,,,:,,,,,,,....,,,,,,.
;                                *####*##     ###########*#########+######+#+#**::::::::,,,.. .  ..........       ...,,
;                                 ,##***         #######.;#*****#####*#*#******,,:::::,,,,,,,,.,,,,,,,,,.......,,::::::
;                                           ... .+#               ,*#####*#,.....,,,,,,,,,,,:::,,,,,,..   ...,,,:::::::
+,,,,,,.,,,,.. . .                         ....#####.......    ....#+##.. ....    ......,,,:::::::::::::::::,,:::::::::
;.,,,...,,,,.   ...                           .,#####,,,,,,,,,,,,,,#####,,,,..      ......,,,::::::::::::::::::::::::::
+....  .    ...      ......,..,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:#.#..,,,,,,,,,,.....,,,,,::::::::::::::::::::,::::
+,,,,,,,,.. .                        . ..... ..............,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::,,,,,..   .             .......        ...........,..,,..,,,.,,::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,...        ........,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::,:,::,:,::::::::,,:,:,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,,,,,,,::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;     .....,,,,..,,,..,,,,,,,,,,,,,,::::::::::::::::,,,,,,,:::::::::::,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
;        ...,,,,,,,.... ........,,,,,,,,,,,,,..,...........          ....,,,,,,,,,,,,,,,,,::::::::::,,,,,,,.....,,,,,,,
;         .....,,,,,,,............,,...                               ........,,,,,,,,:,,,,,::::::::::::::::,,,,,,,,,,,
;... ..         ..,,,,,,,,,,,,,,...........                      .............,,,,,,,,,,,,,,::::::::::::::::,,,,,,,,,,.
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::
+,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::
+,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::,,,,:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:
+::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::,,,,,,,,,,,,,,,,:,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::
+::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::,,,,,,::::::::::::::::::::::::
+:::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::;;::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::,:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,:;+::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,::::;;*::::::::::::::::::::::::::::::::::::
+,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,:;*,::::::::::::::::::::::::::::::::::::
+,,,,,,,::::::::::::::::::::::::::::: ,:::::,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;**,,,,,,,,:::::::::::::::::::::::::::::
+,,,,,,,:::::::::::::::::::::::::::,+###;:;:;;:;,... :::::,,,,,,,,,,,,,,,,,,,,;+*;,,,,,,,,,,,,,,,,,::::::::::::::::::::
+,,,,,,,,,,,,,,,:::::::::::::::::::,:;;;;;;;;;;+:;;,,,,...::::::::::::::::::::+*;;::::::::,,,,,,:::::::::::::::::::::::
;................,,,,,,,,:::::::::,+++++++++++++;++:;:;;,::,...::::::::::::::;+;;::::::::::::::::::::::::::::::::::::::
;           ::;;;:.  ....,,,,,,:::,****++++++++*+*+;*+;;+:::;,,,,...:::::::::++;*::::::::::::::::::::::::::::::::::::::
;                   ;::;;+,........;###********++++*#*;++*;;;;::::,,,,,..:::+++**:::::::::::::::::::::::::::::;+++++;;+
;                          *+:::;;;  #***********##*+*++++++;;;;;++;::,:,,..:+**;::::,,,:;+++++++++++;;+*##::::::::::::
;                            *   ####+;::######**********++; ;;;;;;;;###*:,+++;;:;;+*################+,,,,,,,::::::::::
;                               ######**+## #*#######********#############;:+##############:        +      ............
;                               #######+#*   ##############**######*######+;++;***###########*+:::::::,,,,,,,,,,:,,,,..
;                               +####+##*     ###########################*+++##*++::::::::::::::::,,,,.. ...,,,,,,,.   
;                                 ###***         #######, *#****#####+###*******,,:::::::::::::::::,,,,,,,.....,,,..   
;                                                .#                *####****:.,...,,,,,,,,,:::,,,,,.,,,,,,,,,,,,    ...
;           .,....  .                          #####   ..,,,,,..   ##:#        .. ............,,,,,,,:::::::::::::,,,,,
+.....  . ...,,,,,,,,,,,,...,..                 #####    ..,,...,,,######,,,,,,,,,.,,,,,...     ..  ..,::::::::::::::::
+,,,,......... .....                   .........,+,,#,..,,,,,,,,,,,,,#,.#,,,,,,,.,,...,,,,.............,,,,::::::::::::
+::::,,,,,,,,,,,,....    ...         ...........,,,,,,,...,.,,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,::::::::::::::::::
+:::::,:,,,,,::::::,,,,...                                 ............,,,.,,,,,,,,,,::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::,,,,,.. .    . .,.,,,,,,,,...,,.        ...........,,.,,,,,,,::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::,,,,,,,,:::::,,,,,,,,,,,,,,,........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,::,::,:::::::::::
+::::::::::::::::::::::::,:,,,:::::::::::::::::::::::::::::::::::,,::::::::::::::::::::,:::::::::::::::::,,:,,,::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,::::::::::::::::::::::
;  ...,,,,,,,,,,,,,,,,,,,:,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;   .,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;   ..,,,,,,,...,,,,,,,,,,...,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;     .. ..          ..,,,,,,,......,,,,.,,,,,,,,,::::,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::,,,,,,,
;.      ...           ....,,,,,..............,,,..                                ...,,,,,,,,,,,,,:,,::::::::::::::::,,
;...... ...   ..      ........,,.,,,,,,,,,,.........                         .............,,,,,,,:::,,,,:::::::::::::::
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::,::,,,,:::::::::::::::::::,,,,,,,,,,,,,,,,,
+:::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::,::::::::::::::::::::::::,,,,,,,,,,,,,,,
+::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,:::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,;;+,,,,,,,,::::::::::::::::::::::::::
+,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,;*,,,,,,,,,::::::::::::::::::::::::::
;.........,,,,,,:::::::::::::::::::::::  ...:::::::::::::::::::::::::::,,,,,,,,,,;**,,,,,,:::::::::::::::::::::::::::::
+,,,,,,.,.....,,,,,,,::::::::::::::,,:::::::::...:::::::::::::::::::::,,,,,,,,,,;+*+,,,,,,,,,,,,,,,,:::::::::::::::::::
+,:,,,,,,,,,,,,,,,,,,,,,,:::::::::.+###+;;;::;::,,:....:::::::::::,,,,,,,,,,,,,,+**;,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::;;;;;;;;;;;;+::;::,,,....::::::::::::::::::::+;;::::::::::::,,,,,,,,,,,,,,,,,:::::::
;........,. ,,...,,,..,,,,,,,,,,,,+++++++++++++*;;+;+::::,,:,,...:::::::::::::,++;*::::::::::::::::::::::::::::::::::::
;     .. .  :::;:+.......    . ...*#***++++++++*#;++**+;+;::;;:;,,,...::::::::++;**::::::::::::::::::::::::::::::::::::
;                   ;::;;;;..      ####*********+++*##+++;;;;+;:::::,,,,,..::+++**+:::::::::::::::::::::::,:;++;;+;+;;+
;                          +*::::;,:#****#***********++++++;;;;;;:;;::::::,,..,#*;::::;;++++++++++++;;+######::::::::::
;                            #  *####+  +#######**********++.,;;;;;++#####:,*;;;+**##################*,,,,,,,,,,:::::::
;                              .#######++## #*########*****+*#######*######;:+#####+########...........................
;                              :#######+#*   ##############***#############+++*;++#*#########*:.   ,,,,,,,,,,,,,,,,,...
;                               +########     *#######****##########*######+*+#****+..,,:::::::::::::::::::::::::,,,,,,
;                                 ##****         ##+##### +******#####*#+#****#***..,,,::::::::::::::::::::::::::::,,,.
;                                                 #.                **#####****    .....,,,,:,::::::::::::::::::,,,,,,,
;                                              .####                #* #,,..         .  ...................,,,,,,,,,:::
+,,,,,,..   .         .. ..,,,,,,..,,,...       ######              ######,,,,,,,,.,,...................       ,....,,:
+::::::,,,,,,,,,,.  ...  ...,,,,,..,,,.    ....   # #:               .# ,#,,....,,,,,,,,,,,,,,,,,,,,,,,.      ... ...,,
+:::::::::::::::::,,,,,,,.... . ..    . .       ......,..,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,....,,,,
+::::::::::::::::::,,,,,,,,,,,,,,,,..                          ...............,,...,..,,,,,,,,,,,,,::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::,,,,,.           .      ........        ..........,,..,,.,,,,,,,:::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::,,,,,,,,..,,,,,,,,,,,,,,,,,,....      ..........,,,,,,,,,,,::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::,,,,,::::::::::::::,::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;................,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                 ..,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                    ..         .....,,,,,..,,...,,,,,,,,,,,,,::::::::::::::::,:,,,,,,,:::::::::::,,,,,,,,,,,,,,,,:::::
;                     ....          ....,,,,,..... ........,,,,,,,,,,,,..,..........            ....,,,,,,,,,,,,,,,,:::
+..           ....     ...           .....,,................,,,..                              .........,,,,,,,::::,:::
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::::,,,,,,,,,,
+,,,,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::,,::::::,:::::::::::,,,
+::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,::::::::::::::::,
+,,,,,:::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::
+,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,;+,,,,,,,,,,,,,,,,,::::::::::::::::
+,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;*,,,,,,,,,,,,,,,,,,,,:::::::::::::
+,,,,,,,,....,.,,,,,,,,,,,:::::::::::  ......:::::::::::::::::::::::::::::::::::::;;**,,,,,,,,,,,,,,,,,,:::::::::::::::
+:::,,,,,,.................,,,,,:::::;::::::::,...,::::::::::::::::::::::::::::::::**::,,,,,,,,,,,,,,,,,,,:::::::::::::
+::::::::::,,,,,,,,,,,,,,,,,,,,,,:+*#+**;;;;;:+::,:.....::::::::::::::::,:::::::,;+*;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::
+::::::::::::::::,,,,,,,,,,,,,,,,,;;;;;;;;;;;;+;:;+;;:;,,....::::::::::::::::::::+*;;,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,.,..,,,,,,...,,,,,,,,,,,,,+*+++++++++++++;;;++;::;;;:,:,...,:::::::::::::++;;*::::::::::::::::::::::::::::::::::
;        . :::;;+,... ...........*##****+++++++#+++***+;+++:::::;,,,...,:::::::;++**:::::::::::::::::::::::::::::::::::
; .......... .     ::::;;+,..     *####**********+++##+++++;;;;;::::::,,,...,::++***::::::::::::::::::::::;++++++++;;++
;..........                #;:::;;:,*##*##*******#****++++++;:;;;;;;;;::::::,,..+;:;;;+++++++++++++;;+#########::::::::
;.........                   *  ####*:,;########**********+;: ;;;++++;####+:,#;++######################*:::::::::::::::
;......                        *######*++## **#########****+*##############+;;+#####;########.....,,,,,,,,,,,,,,,,,,,..
; .                            *######**#;   ############*#***#############*+++#+;*+*#####**###+,          ......      
;                               #######**     *#######****##################+*+#****+:             ..,,::,,,:,,,:::::::
;  .                             #+###**          ########+********###+##*#****#***+     ....,,,,,,::::::::::::::::::::
+,,,,.                                            #+     +          +*####*#****.         ....,,,,,::::::::::::::::::::
+::,,,. ..                                      # *#                 # .# ;          ..                ..,,,,,,,,,,,:::
+::::::,,,,,,,,,.                       ...    .######               ######        .,,,,,.....             ..   .....  
+::::::::::,:::::,,,,,,. ...............,,,,,,,,,,#,*#.....           +#+##           .,,......,,,,,..,,,,,,,,.,,,,,,. 
+::::::::::::::::::::::::,,,,,,,,.....  .........       .          ............,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::,,,,,,,,,,.....    ....        ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::
+:::::::::::::::::::::::::::::::::::,,,:::::::::,,... ..                         .    .............,,,,,,,,,,,,,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,... ..   .....,..,,,,.......      ...........,.,,.,,,,,,:::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,::::::,,,,,,,,,,,,,,,.........,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,:::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;....,,,,,,,,,,,,,,,,,,:,,,,:,:::,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                             ....,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                     .         .,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                               ..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
;  ....                              .          ...,,,,,,,....,,,,,,,,,,,,,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,.....               ..     ....          ....,,,,,...............,,,....    .                         ...,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::;;:::::::::::::::::,,,,,,,,,,,,,:
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::
+,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,;;*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;*;::::,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:: .,,,,,..,::::::::::::::::::::::::::::::::::::::;#*:::::::::::,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,................:;;;;:::::::,... ::::::::::::::::::::::::::::::::;+*+::::::::::::,,,,,,,,,,,,,,,,,,::
+,,,,,,,:::::::::::,,,,,,....,..,+:+***;;;;:;:;::,:,.....:::::::::::::::::::::::::;+*;;::::::::::::,,,,,,,,,,,,,,,,,,,,
+,:,,:::::::::::::::::::::,,,:,,,;;;;*+++;;;+;;;++;:;;;,,,... ::::::::::::::::::::++;;:::::::,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,:::::::,,,,,,,::,:,:,,+*++++++++++++*++++++;::;:::,:,,...,:::::::::::::;+;;*:::::::::::::::::::::::::::::::::
;..       ;::;:+...........,,...*##****+++++++##******+;++;;::::::,,,....:::::::,++;**:::::::::::::::::::::::::::::::::
;                 +:::;;+,..     #####************+++*+++++;;;:+:;:::::,,,,...::+++***::::::::::::::::::,;;++++++++;;++
;..            .......... #::::;;; ###*##*************++++++;;;;;;;;:;;::.,:,,,..,:;;;++++++++++++;;;+###########::::::
;........................    *  ###;*;:*#######***********++; ;;;;++++#####+:.;++*#######################+:::::::::::::
;...................... .      #######++*## *###########***+**#######*######;:+######+########,.......,,,,,,,,:::::::::
;...................           ######+++*    *#############***##############*+;+#++*+**######*##*##:         ..........
;............                  *#########     #######################+######++*+#+**++*,                               
;..........                     #*#+####+        *########*****#*##########****###****                  .  .,....,,::::
;...........   . .                  ;:             #     ;     :    **#######*****                     ....,,,,,:::::::
;........,,.,,,,,,,.                            # ##                  # ##***                              .....,,,,,,:
;....,,,,,,,::,:::,,,...                        #####*.              ######                       ....                 
+,,,,,,::::::::::::::,,,,,,,,,,,,.               #####+,..,.......     ####*                     ..,,,,,,,.......    ..
+::::::::::::::::::::::::::::::,:,,,,,,,,,,......   ....,,,,,.,,,,........                         ..,,....,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::,,,,,,,........  ....                 ....,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,..     ..                 .......,..........,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,....    .                ....    .  ...........,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,.,......,,,,,,,,,,,,,,,,. .     ............,,
+,,,::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::::::,::::::,,,,,,,,,,...,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;..,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;        ... ..............,,.,..,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;             .                              ...,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
;                                             .,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::::::::::
;                  .                            ..............,,,,,,.  .,,..,,,,,,,,,,,,:::::::::::::::::::::::::::::::
;       ... ......,...   .                       . ..          ..,,,,,,,.......,,,..,,,,,,,,,,,,,,,,,,,,,,,,...........
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:::,:::::::::::::::::::::::::::::::::::
+:::::::,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;:::::::::::::::::::::::::::::
+:::::::::::::::::::,,,,::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,;;*,,,,,,,,:::::::::::::::::,,,,
+::,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,;;*:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::;+*::,:::::::::,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, .,:::::,,. :::::::::::::::::::::::::::::::::::::::++#*:::::::::::::::::::::,,,,,,,,,
;................,,,,,,,,,,,,,,,.:;;:;;::::::;,.....,::::::::::::::::::::::::::::::::+**;::::::::::::::::::::::::::,,,,
;  ....,,,,,,,,,,,,,,,,,,,,,,,,..:::+*;;;;;;;+:+:,:,,....,:::::::::::::::::::::::::::+*;::::::::::::::::::::::::::::,,,
+,,,,,,,,,,,,,,,,,,,,,:,::::::::;;;;**++;;;;+++;::::;:;:,,,... ::::::::::::::::::::;+*;;::::::::::::::::::::::,,,,,,,,,
+,,,,:::::,,,,,,,:,,:::::::::::+*++++++++++++++++++;;:::;:::;::,,...,,:::::::::::::++;;*:::::::::::::::::::::::,,,,,,.,
+........::;;;:.....,,,,,,,,:,:*###**+++++++++#++;++++;;++;;::;:::,,,,....::::::::++++**:::::::::::::::::::::::::::::::
; ...  .........::::;;;:...     *####***********+++++#+++++;;;;+::::::::,,,,...::+++***::::::::::::::::,,:+++++++++;;++
;   .. .... .           ,;:::;;;;+######*********#*#*++++++++;;;;;;;+;+:;..,:::,.,::;++++++++++++++;;+############:::::
;               ..        ..*# *##;#: +#########**********+++  ;;;;;+++####+::;;++*#######################*::::::::::::
;        .....................+#####+*;+####*##########*****+*##############+;;;######;########+ . .....,,,,,,,,,,,,:::
;  ...........................*######*+#*:   ##############*****#####*#######+;++#++;+;++*#########**#*:            ...
;.............................*##########     ###############################++++*++*++*+                              
;.........................     ####*###**       #*#########***##############****###*****                               
+.........................        ##**+           *#    ##*         ***#########****,                                 .
+,,,...    ...........       ,,...                 #.     ;              ##*****                                      .
+,,,,,... .............,,,,,,,,,,,              ######                ######                                           
+::,,,,,,,,,,,.....,,,,,,,::,,:::,,,..... .      ######               ,######                                   .,,,,,.
+::::::::::::,,,,,::::::::::::::::::::,::,,:,,,,,..# ++...      .  ..,,,+#,##,,,.... ..                         ...,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,.. ... .......,,..,,..  ....          .     ..  ... ....,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,...... ..   .....    .......,,,,,.,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,...                           ....  . ....
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,..    ..   ..................      .
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,... .
+,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,
+,,,..,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;        ..,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;.. .            .....,,,,,,.,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;            .                            ...        .......,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::
;                                                           ..,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::
;                                                           ..,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::
+ ..                       .    ...                                        ....,,,,,,,,...,,,,,,,,,,,,,::::::::::::::::
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::;+::::::::::::::::::::::::::
+:::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+,,,,,,,,,,,:::::::::::::::
+::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::,,,,,,,,,,,;;+,,,,,,,,,,,,,,,,,:::::::::
+::::::::::::::::::::::::::::::::::::::,,,:::::::::::::::::::::::::::::::::::::::::::::::;;*,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,::::::::::::::::::,,,,,,,,,,,,,,:  . .:,,,,,,,,:,,::::::::::::::::::::::::::::::::::+;#*::::,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,::,,,,,,,,,,,,,, :::::::::,,...,,,,,,,,::::::::::::::::::::::::::::::::;*#+:::::::::::::::::::::::::::
;..........,,..,,,,,,,,,,,,,,,,,+###+;;;:;:;:;:,,....,::,::::::::::::::::::::::::::::::;+#*::::::::::::::::::::::::::::
;                    .........,::;;;;+;;;;;;;+;:;;:::,,... ,,,,,,,,,,,,,,:::::::::::::++*;;::::::::::::::::::::::::::::
;                   ...,..,,,,:;+++++++*++;+;;++;;;:;;,;::,,,... ,........,,,,,:::::::++;;;::::::::::::::::::::::::::::
;                ....,,,,,,,,,+**+++++++++;++++++**++;+++;::;;;:,,.....,,,,,,,,,,::::+++;**::::::::::::::::::::::::::::
;        ::;:+,..,,,,,,,::::,,,*##****++++++++*+++******+;+++::;:::::,,,... ::,,,:::;++;**,::::::::::::::::::::::::::::
;             ..+:::::+:........#####************++++*#**+++;;;;+;:::::::::,,,,...,,+++***::::::::::::,,:;+++++++++;;+#
;                       ;::::;;;+#*######********#****+++++++;;;;;;;;;:;;:   ::,.:;;;+++++++++++++;+;+*############*:::
;                      ......#,+##+.++#######**************+;+ :;;;++++;#####+:,#+*########################:#*:::::::::
;                             +####*#+;;+###########*#******++*###############;;;+######:########+      .........,,,,,,
;                         ....*#####+*++*#. . ##############****###########*##*++++#+++++*;;+*########***#*,           
;                  ...........*######**###.... ###############################++*++*#+**+;++                           
+,,,...........................+#########........#########*##***############******###******,                           
+::::::,:,,,,,,..................######*......    .##* ,####    .+++++*#########**#****+                               
+:::::::::::::,,,,....     .......................  #      .             ########**                                    
+:::::::::::::,,,,,,,,,...    .  .....    ..  .,,#####:                ,#####                                          
+::::::::::::::::,,,,,,,,,...............,,,,,,,,######*                ######+                                        
+::::::::::::::::::::::::,,,,,,,....,,,,,,::,::::::##,##,,......          ## #:        ... .     .                     
+::::::::::::::::::::::::::::::::::,,::::::::::::::::::::::::::,,,,,,..  ..............,,,,,,,,,,,,.......             
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,.. .. . ...........     .          .....
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,.....    ....        ........
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,:::::::,,,... .   .            
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,... ..   ...,,.,
+,,,,,,,,,,,,,,,:::::::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:::::::
;..   ..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;        ..  .. ............,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                            ..,,,,.,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                .......             ...............,,,,,,,,,,,,,,,,,,,,,:,:,:,::::::::::::::::::::::::::::::::::::::::
;                                                                             ...,,,,,,,,,,,,,::,::::::::::::::::::::::
;                                                                              .,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::
;             .....                                                             .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;+,,,,,,,,,::::::::::::::
+,:::::::::::+::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+,,,,,,,,,,,,::,::::::::
+:::::::::::;*;:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::,,,;;+*,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::+*+::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::;+#:::::::,,,,,,,,,,,,,,,,,
+,,,,,,,,:::+*+::::::::::::::::::::. .......,::::::::::::::::::::::::::::::::::::::::::::::;;#*:::::::::::::::,,,,,,,,,
+,,,,,,,,,,,,#+,,,,,,,,,,,,::::, ::::::::::::,....,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::;:##+::::::::::::::::::::::::
; .    ......**.....,,,,,,,,,,,++###+;;;;::;;+::,,,.... ;,,,,,,,,,,,,,,,,,:::::::::::::::::+#;;::::::::::::::::::::::::
;            #        .........:;;;;;;;;;;;;;;+:;;;::,,,,.... ,,,,,,,,,,,,,,,,,,,,,,:,,::;+*;;:::::::::::::::::::::::::
;            *                ;+++++++++#++;+;+;+;:::::;;;::::,.....................,,,,:++;;;:::::::::::::::::::::::::
;            *                ****+++++++++#++#+*++;;;+++++:::;:;:,,,....,,.....,.......++;;**,,,::::::::::::::::::::::
;         :::#;.              ,*##****+++++++++*##++;+***+;+;;:;::::::::,,,... :,,,,,,,;++;***,,,,,,:::::::::::::::::::
;            *  ;::::::;, . ....#####************+++++#*#*++++;;;;+;;::::::::::,,,...,:+++#**,,,,,::::,:;;+++++++++;;+#
;            +          .+::::;;:**#####**#*******#****++++++++::;;;;;::;+; :. ,..;;+++++++++++++++;;;+##############+:
;            +                #+##; ++############**********+++. ;;;++++;#####*::,#*########################+..##,,,,,,
;            +                 ####*##+;+*#############*******+*########*######+;;++######+#########                ...
;            +                 #####+#*+**# .# ##+###########****###############++;+*#*+++++*,:;+*########***#*;       
;            ;                 ########*#**.....########################+######*++*++*+++**++*++                       
+,,,,,,,...  ;.              . :##########........########**##**#########+#####*****###+*+*****                        
+::::::::::,,+:,,,,,,,,,,,,,.....#######*...........##+,#####:. ,#****+**#######*#***##****                            
+::::::::::::+;::::::,,,,,,,,,,,,,...................##.......             ########**** *                              
+::::::::::::+;:::::::::::::::::,,,,,,..      ....##.##........     .    ##.##                                         
+::::::::::::;;:::::::::::::::,,,,,,,,,,,... .  . ####### ......,,,,,,   #######;                                      
+::::::::::::;;::::::::::::::::::::,,,,,,,,,,,,,,,..#####*,,,,,,,,::,,,....*####*                                      
+::::::::::::;;::::::::::::::::::::::::::::::,,,,,,,,,,,,,,:::::::::::::,,,,,,,,,,,..                   ..,,,,........ 
+:::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,.......  ...,,,,,,,,,,,..
+:::::::::::::;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,.......... ...     .
+:::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,....    
+:::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,.
+,::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;   .......,,,+,,,,,,,,,,,,,,,,,,,,,,,:::::::::::,,,,,:::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;             ,    ..    ..........,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;             :                     ... ..   .,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;             :                                 .......,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::
;             :                                             .............................,,,,,,,,,,,,,,,:::::::::::::::
;            .+                                                  .                              . .,,,,,,,,,,,,,,,,,,,:
;             +                                                                                  .,,,,,,,,,,,,,,,,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;*,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,:::,,,,:::::::::::::*+::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+*,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,:::::::::::::**::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,::::::::,;+#+:::::::::::::::,,,,,
;......,,,,,,,,,,,,:::::,::::::**. .,:::,,,.. ::::::::::::::::::::::::::,,,,,,,,:,::::::::::::;*##:::::::::::::::::::::
; . ........,,,,,,,,,,,,,,,,,:,**;:;;:::::::+,,,... :,::::,,,,,,,,:,,,:::::::::::::,:,,:,::::++##;:::::::::::::::::::::
;               .......,,,.,,,;**#+#*:;;;;;;;;::::,,,,... :,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,++#;;:::::::::::::::::::::
;.....                       .;+;+;;;;;;;;;;++++;;+::+::,,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,++*;;+:::::::::::::::::::::
+,,,,,,.....                 ,+++++++++++++++++;;;++++;::++::;,:,,......,,,,,,,,,,,,,,,,,,,;++;;+,,,,,,,,,,,:::::::::::
;......                      .*#**++++++++++++*+;+**++;+;+++::+;:+;:,,,,.....,,,,,,,,,,,,,.++;+#*.........,,,,,,,::::::
+,,,,,,,..::::+,.             *###*****+*++++++++++**+;+++*;+;;;::;::::::::,,,... :,:::::,+++;#*#,,,,,,.,,..,,,,,,,::,,
+.............  ,;:::::+,.     *#####*************++++++++**+++;;;;;;;:::::::::::,,,,.. ,++++#**:,:,,,:;++++++++++;;+##
;                        ;:::::;+###*######**************++++++;:::;;;;;;;;:,++,.,+++++++++++++++;;;;+################*
;                             *#**+  +############***********++;; ;;++++;;*#####+::.##########################...,.#...
;                              *###+##+;;+##############*******+*################+;;;+######,:#######* ..    ..       .
;                              *#######++**#,;* ##############****#######*#######*++++###+++;+;*:;+*##*######***#+, .  
;                              *######+**##+     #################################+**+#*++++**++*+:                    
+,,,,,,,,,,,,,,,....  ..        ###########        ###########*##################*****####**+*****                     
+::::::::::::::,,:,:::::,,,,,,..+#+*#####* .... .   .*#########..+#**#*###########*#****#*****;                        
+:::::::::::::::::::::::::::::,,*,,,,,,,,,,,,,,,,,....#*...... ............. #########**** *                           
+:::::::::::::::::::::::::::::::#::::::::::::::,:,,##,##...................## ##.                                      
+:::::::::::::::::::::::::::::::#::::::::::::::::,,#######+....   .........####### .,.,.                               
+:::::::::::::::::::::::::::::::#::::::::::::::,:,,,,######,,................#####*,,,,,.                              
+:::::::::::::::::::::::::::::::#:::::::::::::::::::::;;,:,,,,,,,,,,......,,,,,,,,:,,::,,,,.......                     
+:::::::::::::::::::::::::::::::#::::::::::::::::::::::::::::::::,:,,,,,,,,:::::::::::::::::,,,::::,,,,,..   ... ......
+:::::::::::::::::::::::::::::::#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,....
+:::::::::::::::::::::::::::::::#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,
+,,,,,,,,,,,::::::::::::::::::::*+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,
+,,,,,,,,:,:::::::::::::::::::::#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;        ..,,,,,,,,,,,,,,,,,,:::#:,,,,,::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                               *..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::
;                               *            ..........,,,.....,,,,,,,::,::::::::::::::::::::::::::::::::::::::::::::::
;                               *                               ..,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::
;                               *                     ....              ......,,,,,...,,,,,,,,,,,,:::::::::::::::::::::
;    ..                         +                                   .                            .               ...,,,
;  .  .....                     +.                                                                                 ..,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;:,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;*,,,,,,,,,,,,,,,,,
+,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;#*,,,,,,,,,,,,,,,,,
;..,......,,....,,,,,,,,,,,,,,,,,,,:  ..  ::::::::*+::::::::::::::::::::::,:,,,,,,,,,,,,,,,,,,,,,;;#*,,,,,,,:::::::::::
; ..............,....,,.,,,,,,,:.::::::::::,,.. ::**:::::::::::::::::::::::::::::::::,,,,,,,,,,,;;###,,::::::::::::::::
;        .................,,,,:::;:;;;;::;+:+;:,,,** ..:,,::::::::::::::::::::,,:::::::::::::::,:+#*;::::::::::::::::::
;    .. .....             ....::::**#;;;;;;;;+::::#*,,,,,... ::::::::::::::,,,,,,,,,,,,,,,,,,,,:+##;;,,,,,,,:::::::::::
;.............              ,;;;;;*+;;+;;;;++:+;+:**;;:::::,,,,....,,,,,,,,,,,,,,,,,,,,,,,,,,.;++;;;,,,,,,,,,,,::::::::
;.........................  +*+++++++++++++++++++;*+++;;:+;++::::,;,,.....,,,,,,,,,,,,,,,,,,,.++;;+*,,,,,,,,,,,,,,,,,,,
;...........................,*****++++++++++++#+*+***+;++++;+:::;+;:::,,,,,................,,+++;***,,,,,..............
+,,,,,,,..,:::+,. ........   *####*******++**+++++*#**++***+++;;;+:;::::::::::,,,.....,,,,,,;+++##*+::::::,,,,,,,...:++
+,,,,,,.........;::::::;:, .,..######***************+++++*+#+*+++;;;;;;+:;+:::::::::,,,,, .;+++#*:;;;+++++++++++;:+####
+,,,,,...................+:::::;*###*#######********#****++++++:;,,::;:::;;+;###+:,,*#++++++++;;;;+*###################
;                              #*+.*+###############**********++*;,;;;;;;;;#######::::########################:....,,,#
;                              *##*###+;;+*################*****+*########*#######+;;;+#####:::,########:      .      .
;                              ####+###*++*## ##;##############****#######*#######*++*;+*##++++++;*++##########***;.   
;                              *######***##*      #################################+++++#**+++**+++++;...........      
;,,, ...   ,,,,.. ....   ..,...:############       *##############################*****####*+**+*****............      
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,**+#######..,...  :  ##########  *##***##*##*######*#****##*****:..........           
+:::::::::::::::::::::::::::::::::::,:;+,,::,,,,,..+...#,.....................,##########****.;..........              
+:::::::::::::::::::::::::::::::::::::::::::::::::,*##,##,,,,,,,,,,,,,......+#. #+...................                  
+::::::::::::::::::::::::::::::::::::::::::::::::::*#######,:::::::,,,,,,,..########........................           
+::::::::::::::::::::::::::::::::::::::::::::::::::#,+######::::::::,,,,,,,,,,######  ..... .   ..,..,,,,,,.           
+:::::::::::::::::::::::::::::::::::::::::::::::::,#:::##:##::::::::::::,,,,,,,.#,.+,,.........,,,,,,,,:::,,,...       
+,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::#::::::::::::::::::::::::::::,,,,,,,,,.,,,,,,:::,:::::::::,,,,,,,,,,
+,,,,,,:,,,:::::,,:::::::::::::::::::::::::::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::,::::::::,,::::::::::::::::::::::::::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::,,,,,,,,,,::,,:,:,,,,,:::::::::::::::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,:,,,,,,,,,,,,,,,,,,:::::::::::::::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;           ................,,,,,,,::::::::::::::::#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                  ......,,,,,,,,,,#,,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,::,::::::::::::::::::::::::::::
;                                                  *    ..    ...,,,.,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::
;                                                  *                     .... ..  ..,,,,,,,,,::::::::::::::::::::::::::
;                                                  +                                 .......,,,,,,,,,,,,,,,,,,:::::::::
;                                                  +                      ..                     ..................,,,,
;       ...              ..                        +                                                                   
$*++++;+;;;;;;;;;;+;;;+;;+;;;;;;;;;;;;;;;;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;*,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;:,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+#,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,.........,..,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;#*,,,,,,,,,,,,,,
;.......,,,,,,,,,,,,,,,,,,,,,,,,  .,,,,,,.. ,,,,,,,,,,,,,,,,,,,,:,,,:::::++:::::::,,,,,,,,,,,,,,,,,,;+##*,,,,,,,,,,,,,,
+,,........  ....  ...........::::::::::::::,,.... ,,,,,,,,,,::::::::::::**::::::::::::::::::::::::++##*,,,,,,,,,,,,,,,
+,,,,...                   .;####+#;;;;:;;::+::::,:,,.. .,;,,,:::::::::::**:::::::::::::::::::::::;++##;::::::::::::,,,
;................          ,:;;;;;;;;;;;;;;;++:;;+:::::::,,,... ,,,,,:::,**::::::::::::::::::::::,++#;;;,:,::::::::::::
;....................     ,;++++++;+#*+++;;;;+;;;++::;:+++::::::,,.. ..,,;#:,,,,,,,,,,,,::::,::::+++;;;#,,,,,,,,,,,,,,,
+.........................:**++++++++++++++++*++++;;++;;:++;++:::::;::,,.*#, ,.....,,,,,,,,,,,,,;++;;;#,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,............*##*****++++++++++*#++*+++*;+++++:++;:::;+:::::;:,,,... ... ........,+++;###.......,,,,,,,,,
+:::::,,,,:::::+, .,,,......#####************++++++++**++*++++;;;;;:++::::+;::::::,,,... .     +++:###*...,,,,,,,:+++++
+::::::::::::::,:;::::::+,.  *#######**************++++++++**+++;+;;;;;;;;+;;::::::::;:,,,,:,,,;;;++++++++++++;;+######
+:::::::::::::::::::::,,,+:::::+##+########*#*********+****+++++;:,;++++++*++####+::,+++++;;;;;;+######################
+::::::::::::,,,,,,,,,,,,,,,,,.*#+**##############**#**********+**:+;;;;++#########;::,+#######################,..,.,,,
+,,,,,,,,,,,,,....             #######+;;++#################*******################+;;+++####++;::#####; #+........ . .
+,,,..,,. .         ...       *#######*++**## :# ###############****#######*#######*++++;#*##+++++*++***##########*#*, 
+,,,.,,,....   ..             +########**###      #########################*########++*++##*+++++**++++#+..     ...    
+,,,,,,,,,,,,,.,,.  .          *#####*#####*        ########*#####*#########*######******####*+#*+*******   ...........
+:::,,:::,,,,,,,,,,,,,,,,,,,.,,,#*#*######*,,,.... ....########## :*******##############*****#*******  ................
+::::::::::::::::,,,,,,,,,,,,,,,,,,;###*,,,,,,,,,,,,,,,:##,,,,,,,,,,....  #... .############****.+.....................
+::::::::::::::::::::::::::::::::::::::::::::::::::::+:+#*::,,,::,:::,:,,,#:,,##*##,,,:***.............................
+:::::::::::::::::::::::::::::::::::::::::::::::::::+######:::::::::::::::#::,######+,::,,,,,,,,.......................
+::::::::::::::::::::::::::::::::::::::::::::::::::::########:::::::::::::#::::#######:::::::,,,,,,,...     ...........
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::##:##:::::::::::::#:::::,##:##:::::,,,,,,,,,,,,................
+::::::::::::::::::::::::,,,,,,,::::::::::::::::::::::::::::::::::::::::::#:::::::::::::::::::::::,,,,,,,,,,,,,.....,,,
+,,,,,,,:,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::#::::::::::::::::::::::::::::::::,,,,,,,,,,,:
+,,,,,,,,,:,:::::,,,,,,,,,,,,,,,,,,,:::,,:::::::::::::::::::::::::::::::::*::::::::::::::::::::::::::::::::::::::::::::
+:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::::::::::*::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,...,,,,,,,,,,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::
;                   ......,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::+;:::::::::::::::::::::::::::::::::::::::::::
;                                                 ...,,,,,,,,,,,,,::::::::+;:::::::::::::::::::::::::::::::::::::::::::
;                                                                  .......::,,,,,.....,,,,,,,,,,,,,:,,:,,,:,,,:,,,,,:::
;                                                                          .           ..........,.,,,,,,,,,,,,,:::::::
;     ..    .                                                                                    ...      ..,,,,,,,,,,,
;                                                                                                             ......,,,
+...                                            .                          .                                           
$*++++;+;;;;;++;;;++++++++++++;;;;;;;;;;;;;;;+;;;;;;;;;;;;;;;;;;;;;+++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;*,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;*,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;*#,,,,,,,,,,
+,,,,,,......,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,,..,,....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;##*,,,,,,,,,,
+.................,,,,,,,,,,,,...,::::::,,.. ,,,,,,,,..,,,,.,......,..,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,;;###+,,,,,,,,,,
+,:::,:,,,,,,,,,,,,,,.......,;;;:::::::::::::,,.... ,.,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,::::::::::**::::::;+##*:::,,:,,,,,
+:::::::::::::::::,,,,,,,,.+#####*;;;;;::;;:+::::::,,,.... ;,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::**:::::;+*#;+:::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,::;;;;;;;;;;;;;;;;++:+;;+;::::::,,,.........,.,,,,,,,,,,,,:::::::::::**::::;++#;;;:::::::::::
;.......,,,,,,,,,,,,,,...:++++++++++**++++;;;+;;;+:;+++::+:::::;:,,...  ,...,,,,,,,,,,,,,,,,::,**,::+++*;;;::::::::::::
;..                    ..;**++++++++++++++++++++++;+++;++;:++++::;:;:,::,,.... ........,,,,,,,,:*:,,+++;;;#,,,,::,:,:::
;......... ...............*##****+#+++++++++#*#++*++**++*;;++;++:;:::;:::+:::,,,,..  ..    .. .:;..+++;;##*.,,,,,,,,,,,
+,,,,,,,,.,:::+.  :,,,,,,,,*####*************+++++++#****++*+++;;;;;::;:::::::::::::,,,.. ..    ,.++++*###*  . .. ..:;+
+,:::::::,,:::::;:,,:::;,.  *#######****************+++++++****++++;;;;;;;;:++::::::::::::,,,:..;,,:;++*+++++++++;;;+##
+:::::::::::::::::::::::*:::::###+##########********#***#**+++++++;,,;:;;;;++++###*+:, ,#++++++;*;;;+*#################
+:::::::::::::::::::::::::::::*+ #+*################***********+++* :;;;;;;;;#######+;;:.##########################:..,
+,,,,,::::::::::::::::::::::::,#*#####+;;+#################******+**#################+;;;++######+;:#########+   ......
+,,,,,,,,,,,::::::,,,,,,,,,,,,,##+#####*++#*#####+#############******#######*########*+++;+#*##+#++;++++;:,,;+*########
+,,,,,,,,,,,,,,,,,,,,,,,,.....:##*######**#*#.     #################################*+++*++##*+*#+++***++###*.         
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*#######**####       ,########################*#######******######****+***++**:         
+,,,,,,,::::::,::,,,,,,,,,,,,,,,+########### .         *###########******#######+*####****##****##********             
+::::::::::::::::::::::::::,,:::,,#######**,,,,,,,... ..###,.,,+###,..,,,,,,,,,;##############**##*#**                 
+::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,##:,,,,,,,,,,,,:,::::::,,.##,;##########.....,.....  .........
+:::::::::::::::::::::::::::::::::::::::::::::::::::::##;###:::::::::::::::::::#######,:::::::::#:,,,,,,,,,,,,,,.......
+::::::::::::::::::::::::::::::::::::::::::::::::::::,########:::::::::::::::::,########::::::::#::::::::::::::::,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::,#######:::::::::::::::::::######::::::::*:::::::::::::::::::,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::,,::::#:,#::::::::::::::::::::::::::::::::::+::::::::::::::::::::,,
+:,::::::::::::::::::::::::::::::::::::::::::,:,,,,,,,,:::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::::::+;:::::::::::::::::::::
;,....,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::;;:::::::::::::::::::::
;....,,,,,,,,,,:::::::,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::;;:::::::::::::::::::::
;................,,,,,,,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::;*:::::::::::::::::::::
;                                             .......,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::+:::::::::::::::::::::
;                                                                         ..,,,,,,,,,,,,,,,,:::::+:,,,,,:,:::::::::::::
;                                                                                               .;....,.....,,,,,,,,,,,
;                                                                                                :           ..........
;      ...                  ... .                                                                +                     
;         ....                                                                                   +                     
$*+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;+++++++++++++++;;;;;;;+++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;++,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+*,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;#*,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+##:,,,,,
+,,,,,,,,,,,,,,,,,,.,,,,,,,...  .,,::,,,,,.. ,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,,..,,,,,,,,,,,,,,,,,,,,;+###,,,,,,
+:::::,,,,,,,,,,,,..........::::::::::::::::,,..... ,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.........,,.,,,,,,,,,,,,,;+###;,,,,,,
+:::,,::::::,:,,,,,,,,,,,:;+##*#*;;;;;;:::;:+::::::,,,.... :;:,,,,,,,,,,,,,....,,,,.,,,,,,,,,,,,,,,,,,,,,:;++##;;::::::
+,,,,,,,,,,,,,,,,,,,,,:,:.::;;;;*+;;;;;;;;;;++:++:;:::::::,,,.... ,.............,....,.,,.,,,,,,,,,,,,,,,+++#*;;:::::::
;.............,,,,,,,,,,,;;;;++##;*+;;+;+;;;++;+++:++:;:;:+::::::,,,.. . .... ...............,,,,,,,,,,,,+++;;;;:::::::
;                   .....*+++++++++++++++++++*++*;;++;+:;++:++;+:::;::,:,,... ..  .     ..........,,,,,,+++;;;##,,,::::
;...                .....*#****+++++++++++++##++#++*+;*+++;+++;+::::++;+::,:::,,,...  .              ..;+++;;##,,,,,,,,
;            +.        .. ####********++++++++++*#+#*+*++*++*+;+;+;;:+:::::::::::::::,,,.. .          ++++;####    ....
+,,,,,,,,,,...;,,::,;:,  ,.*#####****************++++++++#*+*++++++;;;;;;;::;::::::::::::::,,,,..  .  +++*+,:;+++++++++
+,,,,,,,,,,,,,,,,,,,,;;:,::::#*##*#####****************+*+++++++++++;;;;;;;;;;;:;.++:,.,,;++++++++++++++++;;;+*########
+,,,,,,,,,,,,,,,,,::,::::::::*:#;*+############*##******##*****++++;, ;;;;;;;;;+#####*+::,*#*##########################
+,,,,,,,,,,,,,,::::::::::::::::########################*************+**###############*;;;;;######################,    
+,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:*#######+;+++*###################******########*########+;+;++####+;;;+;;##*;:;::#.     
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#########++*#*###,,;,###############****#######+#########++*++;#*##+++++++++++#######***
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,###+####***####,,,,..,##################################+++#++####*#+++++**+++++*+;     
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,###############,,,,,,,..##############**#########*#####*******######**************      
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:*##*########,,,,,,,,,,,,,########### ,#****##*###############*****##*******+          
+:::::::::::::::,::::::::::::::::::,#####*;:::,,,,:::,,,,,###,,,,.,.;.,,,,.,,,,,,,,,,##################*#.....         
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,##,,,,,,,,,,,,,,,,,,,,,##:###:,+,*####+,,:::,,,,,,,,,..... .
+::::::::::::::::::::::::::::::::::::::::::::::::::::::#######+::::::::::::::::::,#######:::::::::::::::::::::::::,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::*########::::::::::::::::::########*::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::+#######::::::::::::::::::::##+,##::::::::::::::::::::::::::::
+,,,,,,,,:,,,::::::::::::::::::::::::::::::::::::::::::::::,:::::::::::::,:::::::::::::::::::::::::::::::::::::::::::::
;.,,,,,,,,,,,,,,,,,,,:,,:,:,::,:::::::::::::::::::::::::::::::::::::::,,,,,,,,:::::::::::::::::::::::::::::::::::::::::
+,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,:::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,.,,,,..,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::::
;  ...........,,,,,,,......,,,,,,,,,,,,,,,:::,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,:,,:::::::::::::::::::::::::::::::
;                      ............,,.,,,,,,,,,,,,,,,,...,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::
;                                                                ......,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::
;                                                                                                ..,,,,,,,:,,,:,:::::::
;                                                                                                                  . ..
;                                                                                                                      
;                           .  ...                   .                                                                 
$*+++;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++++++;;;;;;;;;;;;;+++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;+
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;*#
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;###
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  .,,,,,,... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;+####
+,,,,,,,,,,,,,,,,,,,,,,,,,..,:::::::::::::::,,.... .,.........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+;*###,
+:::::::::::::::::::::::,,;+*##*;;;;;;;;:+;:++:::,,,,...   ,   .....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;++###;,
+:::::::::::::::::::::::,.::::;***;;;;;;;;+;+::::;::;::::,,,,.... ..,,,........,,,,,,,,,,,,,,,,,,,,,,,...,,,,.:++*#;+;,
+:::::::::::::::::,,,,,,:;;;;;;;;;;;;;;;+++;++;;+:++:++;:::+::::,,,,.. . ,.............,.....,............,...+++*;;;:,
+:::::::,,,,,,,,,,,,,,,,+++++++++++++++++++++*+;+;++++;+;:+::++:::;:::::,,..... .                 ...........;++;;;+#,.
+,,,,,,,,,,,,,,,,,......*****++++++++++++*#++*++*+*+*+;+;++;++;++::+++:++;::::,,,..... .                 .. ;+++;;+#*..
;.............,.........,*##******++++++++++++###+#+**+*+**++;+;++++;:;:::::::::::::::,,......             ;+++;;###*  
; .     ..... ,,::+:. .. .*#####***************++++++++*+**+*+*+++;+;;;;;:+:;:::::::::::::::,,,...  .......++++###*#   
+.....,,,,,,,,,,,,,+:,,,:::;########**************##***+++++++#***+++;;;;;;;;;;:;+:+:::::::::::::::,  :;;++++++++++++++
+,,,,......... .......,,,,,+:#*##*###########**********##****++++++++;:,;;;;;;++++;####+::,.;*#+++;;;;;;;+*############
+,,,,,,,..,,.....,,,,,,,,,,,,+;*;+*##################**************++*+ +;;;;;;;;#######+::::.#########################
+,,,,,,,,,,,.............  ...,.*#######++####################******+***#################+;;+:++########*:;#########*..
+,,,...,,...... ..,..,,..,.,,,,,#########*++#+####*###############*******#######*########*++++++#####++++++;;+++;;;;;* 
; ..,,..  ..  ...,,,,,,,,,,,,,,.*#########+**####,,,,,,############*######################+++*++*##**#+++++++*+*++#####
+,,,,,,..... ,..,,,,,,,,,,,,,,,###*#####*****###,,,,,,,,#########################+#######*****++#####++*++++**+**+++**+
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,########*#######,,,,,,,,,,,;########################*####***#***#######***+***********  
+::::::,,:::::::,,,:,:,,,,,,,,,,,,:*+*########,,,,,,,,,,,,,,###;*#######,,,+####***#*###############***##*******+      
+:::::::::::::::::::::::::::,,::::,,,,:+**#,,,,,,,,,,:,:,,:,:##,,::,,,,*,,,,,,,,,,,,,,,,################***:,*......  .
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::*,,+#*::::::::::::::::::::,##,##+,,,,,,+++:,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::########:::::::::::::::::::*#######,,:::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::,#########::::::::::::::::::#########:::::::::::::::::::::::::
+,,,,,,,,,::,,:,::::::::::::::::::::::::::::::::::::::::::::#######:::::::::::::::::::::###:##:::::::::::::::::::::::::
;.....,...,,,,,,.,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+.   ......,,,,,..,....,,,..,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,........ .....,....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::
;.................      .......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:::::::::::
;                                             .........,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,:,,,,,
;                                                                          .         ......,.,,,,,,,,,,,,,,,,::,,,,,,,,
;                                                                                                           .   ....  .
;                                                                                                                      
;               .                                                                                                      
$*++++;++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....,,,,.,,,..,,,...,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  .......   .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,.:::::::::::::::,...    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,:;;;;;;;;;;;::;:::+++:,,,,,...   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;
+,,,,,,:,,,:,:,,,,,,,,,::;*##*##*;;;;;;;;;;;;+;:::::::,:,,,,..... .,,,,,,,,,,,,,,,,............,,,.,,,,,,,,,,,,,,,,,,;;
+::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;+++;++++:+:::::::::,,,,....  ,..........................,,,,.,,,.,,,,,,,++
+,,,,,:,::::::::::::::::+++++++++++#+#++++++;;+;++;+++;+++:;:++;::::::,:,,,....  ,,,,,,,,,,,,,,,,,,,,,,,...........,;++
+,,,,,,,,,,,,,,,,,,,,,,+**+++++++++++++++++++;*+++++;+;+;+;;+;+::++::+:+;::,:::,,,,.... ::,:::::::,,,,,,,,,,,......;+++
+,,,,,,,,,,,,,,,,,,,,,,,*#*****++++++++++++++*##**+*+*+*+*+++;+;++;+;;::;++:+:::::::::,,,,.... ,,,,,,,,,,,,,,,....;+++;
+,,,,,,,,,,,,,,,,+..,,,,.#####*********++++++++++++#+#+#+++;*+*+*+++*;;;;:+;::::;;:::::::::::,,,..... ,,.........:++++;
+,,,,,,..........,:,,::,+,*######******************+*++++++**+*+*+++*+++;;;;;:+;::;::::::::::::::::::,,,.... ....+++;.,
+,,,,,,,,,,,,,,,,,,,....,;:,*#########**************#***#**++++++++*+++++;;;;;;;;;;;::;+..   ,::. ;;;;++++++++++++++;;;
+,,,.......,.,,,,,,,........,*+#+++##############*********##*******++++;;: ;++++++++;######+:::.;*;;;+;+*##############
;... ...              ....,,,,*#*#+#####################**#***************;*;;;+*###########+;;;:,;####################
;                     .....,,,,,*#########+;;####################*#********#################*;;;;;++#####+##+;+;#######
;               ......,,,,,,,,,,,##########*++++*####;*###############******#######*#########*++*+++######+++++++++++++
;    ....        .   .....,....#############**######.,,,,,###################################+++++++*###**#++++++++***+
+.....   .   ...,,...,,. ..,.. ###*########***####,,,,,,,,,#########################+######*#******+######*****++***#**
+,,,..,,,,,,,,,,,,,,,,,,,,,,,,,+#:#*#############*,,,,,,,,,,,,########################+######******#######*******#*****
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;**#########:,,,,,,,,,,,,,,####++#######,,,,*#########################**##*******#*
+,,,,,,,,::,,,,,::,:::::::::::::::::::::,;++#:::::::::,:,::,,,,,###,,,,,,,,#,,,,,,,,,,,,,,,,###################*#*,,+,,
+,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::+,,*##:::::,:::::::::::::::,##,##;::::+:,:*+#+,:::::::::,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#######::::::::::::::::::::#########::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,##########::::::::::::::::::##########::::::::::::::::::::
+::::,,,,,,,:,,:,,,,,,,,,,,,,:,,:,,,:,:::::::::::::::::::::::::########:::::::::::::::::::::###;###::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:::#*::+:::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,..............     ....  ........,,,,..,,....,,..,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::
+:::::::::,,,,,,,,,,,,,,,,,......,.......................,....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+....,,,,,...........,.........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,:
;..     . .                ...     ...       .....              ..........................,,,,,,,,,,::,,,,,,,,,,,,,,,,,
;                                                                                   ....... ...........,,,,,,,........,
;                                                                                                                      
;                                                                                                                      
$*;;;;+;+++++++++++++++++++++++++;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,....,.,,...........................................,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,.,,,,,,......................................,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..........,.....,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,:,,,,::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,::::::::::::::::::::::::::::::,:::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,:,,::::::::,  ....,,..   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,.::::::::::::::::,,....  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,:;;;;;;;;;;;:;;::::++;:,,,,,,...   :,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,;###*#*#*;;;;;;;;;;;:+;;;:::::;::,,,,,...  ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,:;;;;;;;;;;;;;;;;;+*;;+++;+++++::::::::::,,,,,...    ..,.,,,...........,,,,.,,,,,,,,,,,,,,,,,,.
+,,,,,,,,,,,,,,,,,,,,,,;;+++++++++###+++++;;;;;+;+++;+:++:++:+:++:::::::::,,,....   ,,,,,,,,,,,,,,,,,,,,,,.............
;......,,,,,,,,,,,,,,,,+*++++++++++++++++++++++*+++*;+;++++;;;+;+;++:+;:::;+:::;:,,,,....  .,,,,,,,,,,,,,,,,,,,,,,,,,,,
+...................,,,,##***+++++++++++++++++##+++#+*+*;*+;;++;++++++;;;::+::;+:::::::::,,,..... .,,,,,,,,,,,,,,,,::::
;................... ,,,+####*******+++++++++++++++#+#+#*+*+*;*+*+*;;;+;;+;;:;;+::::::::::::::::,,,,....  ,.,,,,,,,,,,,
;  .............,,,:,,::+:#######*******************+*++++*+***+*+*++++++;+;;;;+;:;;::::::::::::::::::::,,,....  .....,
;                ......,,;,,##########***************#*#*****++++++#+**+++++;;;;;;;;;;;;+:++::::::;::::;+:,,:;;;+++++++
;                     ...,,,,**##+*#############***********#***#****+++++++;::;++++++++++####*+::,.+;**+++;;;;;;;+*####
;                     ...,,,,+;* +++######################**************+++*+ +;;+;;;;;;#######+;;::,;#################
;... ..                   ......+#..;#############################***********###################+;;;;;;+############+##
+,,,,,,,,,,,,,,,,,...            #  #########*+++++####################*******##################+++;*+++######*+++++;##
+::::::::::::,,,,,,,,,....       +  #########*++***####+,,,,*###############****#################++*#+++*##**##++++++++
+::::::::::::::,,,,,,,.....    ###############**####*....,....#*#######################+########*+*+#+++#####**#+++++++
+,,,,,,,,,,,,,,,,,,,,,.....  .,#####+################.......... ########################+#######********########******+
+..,,,,,,,,,..... ...  ..,.  .,,,,,..##############*,,,,,,,,.....,##################################*#######********#*#
;.       ......        ..... ..,,,,,,,,;##########+,,,,,,,,,,,,,,,,###:,,,,+####,,,,,,;,,,,,,,;###################*#***
;     ..    .,.. . ..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::,##:,,,,,,::#,,,,,,,,,,,,,:,,###,,,;###############,
;        .....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::##:####:::::::::::::::::::::###+###+,:::::::::+::::::::
;      ...    ..,,,,,,,,,,,,,,,:::::::,:,,,,,,,,,,:,,::::::::::,########::::::::::::::::::::##########;::::::::::::::::
;  . ..... .....,,,,,,,,,,,,,,,,:,:::::::::::::,,,,,,:,,,,:::::,##########;::::::::::::::::::;;########::::::::::::::::
;  ..       ....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,::#######+:::::::::::::::::::::,##:###::::::::::::::::
;         .......,,,...........,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::
;        ..    . ..........,,,,,,,,,.,,..,...............      ....  .......,,,,..,,...,,,,,,,,,,,,,,,,::::::::::::::::
+..,,,,..,,..,,,,,,,,,,,,,,,,,,,,,::::::,,,,,,,,,,,,,,,,................................,,...,,,,,,,,,,,,,,,,,,,,::,,::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,,,.............,........................................,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,..........   ... .                ... . .....  ..........             ...............,,,.......
;,............. ...                                                                                                .. .
;                                                                                                                      
$*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;+;;+++;;;+;;+;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++
+..,,,,..,...,....................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,................,,,,,,
+.,,,,,,,,,,,,,,...,.......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,.......,..,,,,,,,
+,,,,,,,,,,,,,,,..................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,..,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,    .:,,,:,:::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,:::::::::::,,..  .,::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;:;:::::::::::::::,,,,....  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,;+##+###;;;;;;;;:;:;;+;:+:::::,,,,,....  .,.,:.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,.::::;;*##;;;;;;;;;;;;;+:;;+::;;:+::::::,,,,....  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+..,...................:;;;;;;;;;;;;;;;;;;;;;;*++;;:+:+++:++::+;:::::::,,,,,,...  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,........++++++++++++++++++++++++**;;++;+++:+;+;;:+;++;+:;:::+:::,,,,,...   ,,,,:,:::::::::::::::::::::,,
+......................***+++++++++++++++++++++*#+++*+*;*;+;+;+;+;+;+;++::;::+::::+::::,,,,....   ,,,::::::::::::::::::
+......................*###*****+++++++++++++++###*+*+*+*+*+*++**;*++++;+:;;;;;++++::::+:::::::,,,,...    ,,,,,::::::::
;.......................;#####**********++++**++++++++#+#+#+***+*+*+*+++;+;;+;;;;;;:;;;:::::::::::::::,,,,...    ,,,,,,
;                      ,,:*#######*********************++++++++#*+*++#+++*+++++;;;;;*+;;:;::::::::::::::::::::,,,,.... 
;                          ;###########**************#**#+#+****++++++++*++++++;;;;;;;;;;;;;;::    . :;;;:,,:;;;+++++++
;                            *+##++################********************+++++++;::;++++++++++#####++:::..++#+;+;;;;;+###
;                             .+ #++########################***************+++** +;;;;;;;;;########+;;;:,,#############
;   ......................    .. *#    ##############################***********###################+;;;++:;;###########
;     ...  .................,,,. #+...#########++;+*+#####################********##############*##*++++++++########+++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+:,,,#########*++++**#####   :*##############*****#######*########*+++*++++;###*###+++
+,,,,,,,,,,,,,,,,,,,,,,,,,,:,,::#*#*:,##########*****###.        #########################*#########++++#+++#######*#++
;.............,,,,,,,,,,,,,,,:,*###+::+#######*#*#*####*...        ########################+#######*********#########**
;              ......,,,,,,,,,,,,,,,,,,+###############....... .......########################*###########*######******
;                ...        .  ........,.############*  ........,.....*####,,+######,,,,,,*:;;;:,+#####################
;                               .             ,;,*      .. .. .,,,,,,,,*#,,,,,,,,,,+,,,,,,,,,,,,,,,:,##*,,*############
;                           .           ... ...,....,,,,,,,,,,,,,,,:+,,####,,,,,,,,:::::::::::::,##,###;::::::*:::;###;
;   .                                      .......,,,,,,,,,,,,,,,,,#########,,,,,,::::::::::::::#########;,::::::::::::
; .....  ....                      .    ...  .....,,,,,,,,,,,,,::::###########,,,,,:,,,::::::::::###########:::::::::::
;  ..... ....                                 ....,,,,,,,,,,,,,,,,,:,,#########,,,,,,,,,,,,,,::::::;########:::::::::::
;. ..  .......                       .       . ......,,,,,,,,,,,,,,,,,,,###,##,,,,,,,,,,,,,,,,,,,,,,:,;::,::,::::::::::
+....                                     ........,,,,.....,.,...,,,,,,,,,,,,,,,......................,,,,,,,,,,,,,,,,,
+,,... ..                                ...    . .......,,,,,,,,,,,,,,,,,,............  ....   .... ........,,,,,.,...
+,,,.,,..,,,,,,,,.,,,,,,,,,..,,,,..,,,...,,,,,,,,,,,,,,,,,,,,,,,:,,,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,....................
;........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;...  ....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.......,,,.............................................
;..........,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.........                                   .           ..     
;  ..                              ...                                                                                 
$*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;+++;+;;;;;;;
;..........................................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+.................................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+.............................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,..,.......................,,,..........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,........,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ..,::::::::,,...  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,.:::::::::::::::::::::,,,...   ,,,,,,,,,,,,,,,,,,:,:::::::::::::::::::::::::::::::::::,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,;:;:;;;;;;;;;;:++:;:+++:::::,,,,,....  .,,,,,,,,,,,,,,,,,,,,,:,,::::::::::,,::::,,:,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,;;**#+#*#*;;;;;;;;;;;:;:+;;;:;:::::+::::,,,,,..   :;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;+;;;;;+++;;+++++;+;:::::::::::,,,,,....  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,;;;;++++;*#++*+;+++;;;;;++*;;;+;;+;+;+;++:;+;+:;:::::::::,,,,,...   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,+*++++++++++++++++++++++++**+++*+;+;+;+;+;;;;+:+;+:;++:;:;;::::+:::,,,,...   ,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,.******+++++++++++++++++++#*+++#++*+*+*+*;;+;+;+;+;++;;;;++;;;+;:;:::::::,:,,,,...   :,:::::::::::
+,,,,,,,,,,,,,,,,,,,,,.###*******++++++++++++++++#*+*++#+*+*+*++*+*+*;++;;++;;;;;:;;;:::::::::::::::::,,,,,,...   :::::
+,..........,...........*######*******************+++++++*+*+*++#+*+*+*++++*+;;;;;++;++++;:::::::::::::::::::::,,,,....
;.........................*#######************************++++++++++*++***+*++++++;;;;;;;;;;;;;:;;;::::::::::::;:::::::
;                           **#########*##*************#*##*#*#+****++++++++++++++;;;;;;;;;;;;;;++++,:,. ;;++++++++++++
;                           *+##+*+*#################***********###********+++++;+, ;++++++;++#######+;:;:,.**;+*######
;                             *#*#++ ***#######################******************#*+*;;;+*############+;;;;:::+########
;. .....   ......              :**      ##################################*********###################+;;;++;;++#######
;                                +     *#########++++++*#####################********#################*++++;*+++#######
;               .......... ..   .+.....*#########*+++***######,,,+###########*#####***#################+++*+++++#####*#
;          ........,..,,,,,,,,,#####,,,+##########****####,,,,,,,,,,*########################+#########****+++++#######
;..               .....,.......#####,,,,*########**#*#####,,,,,,,,,,::*#############*#########+#####*#*********########
;...                    ..              ,*############### ......,,,,,,,,,################*############################*
;...   ...        ..        ...           #**###########........ ......,,.####,,:#######......#.:;;;,;*################
;...            ....        .                  +***** .           . .  ...,## .....    #   ........,,,,,.###,,:########
; ...             ..                                                      ###.  ....      ....,,.,,,*##,###,,,,,,,:,,:,
;                            .  ...   ..                              #########........,,,,,,,,,,,,,##########,::::::::
;                    .  ... ...  .......                              ############...,,,,,,,,,,,,,,,:##########*:::,:::
;                    ..    .  .   .   ....   ..                    .  ., #########...,,,,,,,,,,,,,,::::#########:::::::
;               ..  ......,,..... ..  ..... ......                         *## ###...,,,,,,,,,,,,,,,,,,,,,##,,#*::::,,,
;    ...  .......,,,,,,,,,,,,,,,,,..   .      ..                                 .................,,,,,,,,,,,,,,,,,,,,,
;.         .....,,,,,,,,,,,,,,,,,,,,,...                                           ...........,,,,,,,,,,,,,,,,,........
+..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................. ...........................,,,,,,,,,,,,,,::,,,:::,,,,,,,,,,,,
+,,.,,,,,...,,...,,.,........................,,,,,,,,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,
+,,,,,,,,,,,,,,,,,,,.........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....,,,,,.......,.
+......,,,,,,,,,,,,,...................  ...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........  ........ .  ..
;                                                    .............,,,,,,,,..,,..........                               
$*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+............................................................................................................,..,,,,,,,
+........................................................................................................,,,,,,,,,,,,,,
+..................................................................................................,,,,,,,,,,,,,,,,,,,,
+,,,,,,...........,.,.,,,,,,,,,,,,,,,,.....................................................................,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.............................,..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ....,,,,,,..   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,, ,:::::::::::::::::::,,,..   .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,:,;;;;;;;;;;;;;;;:::::+++;:::,,,,,,...   .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,::::::
+,,,,,,,,,,,,,,,,,,,,,,:###+###*;;;;;;;;;;;:;;;+;;;:::::::+::,,,,,,...   :;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::
+,,,,,,,,,,,,,,,,,,,,.:;;;;;;+**;;;;;;;;;;+;;;;+++;;+++;+:;;:::;::::::,,,,,....  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,:;;;;;;*+;+;;;;;;;;;;;+;;;**+;;;++;+;++:+:++:+:;:+:::::::::,,,,,....  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++++++*+;;+++++;+;+;+;;+:+;++;++;:::::+::+:::,,,,,...   .,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,***++++++++++++++++++*++*++#*++++*+*+++++;++;+;+;++;+;++:;;;;:;+:;+:+::::::,,,,,,...   ,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,.###*****++++++++++++++++++#*###+*+*++*+*+**+*+*+;+;+;+;+:;;;;;:;++++:::::;::::::::,,,,,,...   ,,,,
+.,,,,,,,,,,,,,,,,,,,,####**********+++++++++++++++++#+#++*+*+#++*+*++*+*++;++;+*+;;+++;;;:;;:;:::::::::::::::::,,,,,,.
+.................,,,,,*#######***********************+*++++++*#+##*+**+*+++++*++;+;;;;;;+++;;::;::::::::::::::::::::::
+........................,##########*******************#*#*+*++++++++++++*#+**++++++;;;;;;;;;;;;;;::;+..:::;;:;:;;:::,;
;    .     ................ ####**##############**********####*##**#+***++++++++++++;::;;:;;;;;::;#####+::::, ++;*++++;
;           ....... ....   *: #*+++########################*********************++;+;. +;;;;:;;;;#######++;;:::,.######
;    ....                     * #*+   ,#**##########################*******************##################+;;;;:::;;####
;                        ......+# ..     .##################################**********####################*+;;;*;+++###
;          ...                  ;        *########*+++++++*#####################********#######*##########*+++#*++++###
;                               +        *#########*+++##**######*  :#####################################++++**++++###
;               ....          ####*      *########*#****#####    .....,*########################+#######*#*******++*###
;....     . .     ..    .     ####+.     +#########**########.........,,,,#######################*#######**********####
+,,...,..      ...,,,...     .         .. +#################       ..........################*#*#################*#####
+..,......  .  ...........           ....   +++############                  ##### .+#######.,,,,,.;+++++:+*###*#######
;............. .. .... ....          ...      .:**####**+      . ....         .#.        ..,         . ......###.,..*##
;     ... .       .                   . ..             ...                    ###:                       ## ####:     .
;                                        .                              . ########                      ##########   ..
;                                                         ..  .    . .... #########;:                    ############..
;         .   ..  ..     ..                                   . ....    ..############                     ########## .
;            ..     .. ..         .                        ..   ....    ..  .#########                        ### ### .
;              .                                      ........,,,,,..,....  ... +.......                              .
;...........                                     ......,,,,,,,,,,,,,,,,,,,....                                      ...
+,,,,,,,,,,,,,,,,,,,,,..,,,,,,,,.....,..... .........,,,,,,,,,,,,,,,,,,,,,,...  ..                                .....
+,,,,,,,,,,,,,,,,,,,,,,,,,....,,,.,..,....................,.....,,,,,,,,,,,,,,,,..,.,,,,.,..,,,,,,,,..,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+...........,,,,,,,,,.....,.......,,,,,,,,,,,,,,,,,,,,,,,............. ....    ....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;...... ... .    .. .    ..    .     .............................................,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
$*++++++++++++++++++++++++++++++++++++++++;;+;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,..........................................................................
+,,,,,,,,,,,,,,,,,,....................................................................................................
+,,,,,,,,,,,,,,,,,,,,,,,,..............................................................................................
+,,,,,,,,,,,,,,,,,,,,,,,,.,....,,.....................................................................................,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,...,..,...........,,,,,,,,,,,,,,,,,,,,,,,,.........................,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,.........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ............ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,
+,,,,,,,,,,,,,,,,,,,,,,,,.,,::::::::::::::::::,,...   .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,.:;;;;;::::;:::;;::::;+;::::::::,,,,...   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,
+,,,,,,,,,,,,,,,,,,,,,###*###+;;;;;;;;;;;;:;;:+::+:::::::::::,,,,,...    ,,,:;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,+++*+**#*;;;;;;;;;;;;;;;;++;;;:+;:;;;;;+::::::::::,,,,,....  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,:;;;;;;;;;;;;;;;;;;;;;;;;;;+;+;+;;++;++++;+;+:++:;;;::::::::::,,,,,...   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,:;;;++++++;+**+***++++++++;;;+*++;;++;**;+;++;++++;+;+++;;;;:::::::::::,,,,,,...   ,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,++++++++++++++++++++++++++++++*++++;*++*;++*+;+;;;;++;+;;+:++++;;;;+;;::::++::::,,,,,,...   ,,,,,,,,,,
+,,,,,,,,,,,,,,,,,****+++++++++++++++++++++++++*+++++*+**+**+++**;;+;+;++++;+;+;;;;++:++;:+++:::::::::::::,,,,,,...   ,
+,,,,,,,,,,,,,,,,,.###*******+*++++++++++++++++*#*#+#*+*#+*++*+*++*++*+*;;++;;++++;;;;;;;;::;+::::::::::::::::::::::,,,
+,,,,,,,,,,,,,,,,,,,#####**********************+++++++++++##+*+#+#++**+*++*++++;*;;;;;;*++;::;;:;;:;;::::::::::::::::::
+,,,,,,,,,,,,..,......*######******************************+++++++++##+*++**++++*++++++;;;;;;;;;;;;:;+;;::::::;;;;;;;;;
;.......................#############******************###+**#*****+++++++++++##++++++++;;;;;;;;;;;;;;:+++::,,. +.;++++
;                         #*##++*#################********************#******+++++++++;:;:+++++++++++######+;::::,..**#
;                         +,+#++++##########################***#*******************+++**+ *;;;;;;;;*########+;;;;;::,,*
;                           ,### +     +#*##############################*****************####################+;;;;+;;;;
;                            **#           ;#####################################*********###################+;+++*++++
;                              +           ##########+++++*+*#######################********#################*+++*##+++
;                              +           ##########*+++**+**########+;############*##############*########*#++++#*+++
;     ..                     ####*         *##########****#*####          **#######################*#########**********
; . ... ..  ....             ####+         +#########***#########             #######################*####*#***********
;......,,.,,,,,,,,..          :             +##################.....             #################**#**################
+............,,,,,....... ..  ....   .   ....**##+############ .........         ####+,.#########      .;+****+;,######
;................. ....,.....    ...............############,  ...........        ###...        +                .###  
;......,,,,,,,.,.............    ..,,,.. .....   ............ ..   ..  .          ####                ...    ;##.####* 
;.........................       ......               .           .           ### ####:                ..    ##########
;                                                                            +##########                     ##########
;                                                                             #############                  . .#######
;...........        .. . ...                                 .     .             #########*                     ...### 
;........... ...................... ..            ..         .        . .           ###.##:           .. .......,,.....
;................................ .... .                                                     .  .. ...,,.,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..........,,,,,,,,,.......                                .......,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,,,,,,...,............,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....,,,,,,,,...,...............,............
;.......................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,............
;...                           ............................................................,,,,,,,,,,,,,,..............
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;++++++++++++++;;++;;;;;;;;;;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,.................
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..........................................
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,........................................................
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,.....................................................
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,..,.,,........................................,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.      .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,..,:::::::::::::::,,....  ,.........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::,,,,...   .,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,:;;;;;;;;;;;;;;;;;++;:;;:++++::::::::::::,,,,...   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,:+###+####;;;;;;;;;;;;;:+;;:+;;;;:;;::::::+:::::::::,,,,,.... :+:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,:::;;;;;;*+;;;;;;;;;;;;;;;;;;+++;;;+:++:+;;:;;;;;:::::::::::::::,,,....  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,;;;;;;;+;;;;;;;;;;;;;;;;+;;;;**+*;;;++;++;++;+:;+++:+:;;+;;;:::::::::::::,,,,,...   .,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,+++++++++++++++++++++++++;+++++**++;;**+;++*+;++;+;;:;:+;+++:++:;;:;:;::;:+:::::::::,,,,,..    ,,,,,,,,,,,
+,,,,,,,,,,,,***++++++++++++++++++++++++++++**+++++*+;*++*;*++++;+:++;;+;++;+:+;+;;:;+++;;;;++:::::::::::,,,,,,...   .,
+,,,,,,,,,,,,.******++++++++++++++++++++++++#*#++#**++*++*+**+**++*++;;+**+;+***;;;;;;;:;+++:;::::::;:::::::::::::,,,,,
+,,,,,,,,,,,,,.####******+**++++++++++++++++++++*+**+**++*+**+**+*++*++*+**+;+;++;**+;;;+*;;;+;:;;:::::::::::::::::::::
+.,.....,....,,,######*#************************+++++++++++##+#*+##**++*++*+++++*+++;;;;;;;;;+*+::;;:;:+;;:;;::;;;;;;;;
+......,..,,,,,,,,*########***************************+***+++++++++++++*++***+++*+++++++;;;;;;;;;;;;;:+;;;++:::::;;;:;;
+.....,.......,,.,.,,*############*********************#***##*#+**+**+++++++++++++++++++;;;;;;;;;;;;;;;*##*+;:::,. +;,#
;.....................***##+*################**#**************#**###+**********+++++++;;+;,;+++++++++########+;;;:::,.;
;                     *+;*++#++###############################*********************++++*#*;*;;;;;;;+#########*+;;;;;;::
;                        #+*# :     .****################################*****************####################+;;;;*;;;
;                         ++*,             ;#####################################**********################*##*++++;*++
;                                          ##########++++++###########################********################*++++###+
;                           *              ##########*++++#****#######:+############################*##########++++#*++
;                         #####            *##########*****#*####          **#################################*********
;                        ####*+            +########*#***##*######              #**###################*####*#*****#****
;                      .. ####    ..... ..  *####################                  #################***################
;             ..   ..........................+#################+                   ######*##########    ,+###**#######*
;                         .....................##############*....   ...  .......   ####..........;#     ............##
;                      ........................ ......,.................    ..,.... ####............ ... .......##..###
;            .      .   ..........................,,,..,..,............    ..,,,##  #####       .... .   .. . .*#######
;                         ..........    .       .  ...  .......   .          ..###########                     :#######
;                           ......                                             *#############                   ;#.####
;   ..   .  .        ............... ... ......     ..                           * ###########                      *.#
;  .   .......... ............................  ..  ..       ............ ..          ###+###,         ..              
;................................................................................ .                                    
+,,,,..................................,,,,,..........................,,..... ....                                     
;....................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,
;.....................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
;............................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;.................................................   .          ...............,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..............
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,.,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,...,,,,:::::,,,,.... ..,,,,,,,,,,,,.,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,::::::::::::::::::::::::,,,,.....  ,,,,,,,,,,,,,,,,,,,,,,,,,,...............,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,:;;;;;;;;;:::::::;;;;;;:+++:::::::::::::,,,...... .,,,,:,,,,,,,,,,,,,,,,,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,*##+##*+;;;;;;;;;;;;;;;+;;;++;:+::::::::::::::::::::,,,.....  :;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,, *###*##+#*;;;;;;;;;;;;;;;;;;++;;;;:+:+;;;;;;+::::::;:::::::::::,,,,..... .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,::;;;;;;;;;;;;;;;;;;;;;;;+;*;;;;++++;;++;+++++;++;+:++;:;;;;+;::::::::::::::,,,,..... .,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,;;;;+;+;++**##*+;+;;+++;;;;;;+;+;**;;+;**;;+;;++;++;+++:+++;+++;;;:;;;:::::::::::::::::,,,,... . .,,,,,,,,,,,,,,
+,,,,,,+++++++++++++++++++++++++++++++++**++++;*;+**+*+;++;++;;;;++;++;;+;+;+++;;+;;++:;;:::,:::::::::::,,,,,....  ,,,,
+,,,,,,***++++++++++++++++++++++#*++++++**+++++*++**+**+**+++;+*;++;+++*+;+*++;+;;+++:::;:+++++:::::::::::::::::::,,,,.
+,,,,,,,##******++++++++++++++++++++++++#*####+*++**+**+**+**++*++*+;+;++;+*;+**;:*;;;+;;;;;;+::;:;:;::;:::::::::::::::
+,,,,,,,,####***********+++*+++++++++++++++++++#++##+##+**+**++*+**++*++*++++;*+;;+;;;;+;+*;;:;::;;;;;;;::::::::::;::::
+,,,,,,,,,;######****************************++++++*+++++++##++#*#*+**++*;+++++*+++++++;;;;;;;*+;+;;;;++:;;:;;;;;;;;;;;
+,,,,,,,,,,,.##########******************************+*****++++++++++*+++**#***#++++++++;;;;;;;;;;;;;;;;;..... ;,:;;::;
+,,,,,,,,,,,,,,;#############********************#*#####*#***#******++++++++++++++++++++;;;;;:;;;;;;;:#####++:::::, +++
+,,,,,,,,,......,#**#+**#######################**************#*#**#***********+++++++;;+;.,+++++++++########++;;;;:::,.
+,,,....,........+++#+++#+#################################***********************++++*##+*;;;;;;+#*#########+;;;;;;:;:
+..................+#,*#*:.....,#*#*###################################*#*****************###################*+;;;+++;;
;....................*+#..... .           ######################################***********################*##*++++;+;+
+.................  . +#                 *#########+*++**###########################*********######*#########**++++##*+
;                     :+                 *#########**++++#+***######****############*##############+##########*++++*+++
;                    #*##*               +#########*#****###*#### *+;     **########################*#######*#*********
;                   ####*+               +##########****#*########             .*##**################+#######*****#****
;..                 ######                +#######*##############                  ####################################
;....                                      +###################...............  ....##################.,+##**########*#
;.......                                     **##############*    ..................#####.........+###,,,...#... .   .#
;...........                                     ,#****#***            ..............####............#.......... . . ##
;.............                                                    ...................+####......................:######
;...............                                                      ..........##########,.....................#######
;................                                                       ....  ..###########;*+.                  ######
;..................                                                ..   .... . .###############                     +##
;    ................   ... .                                     ..................########### ....           .....   
;       ...................... .. ..   ..      ............ ...........................###  ##  ... ...................
;             ............................................ ............................................................
;                 .............................,,................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;                   .............. .............    ..............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;                   ...............................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;               . .............................................................................................,,,,,,,,
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,......,.......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,.,,::::::::::::::::::::,,........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,:::::::::::;::::::::::::::::::::::::,,,,...... .,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,;;;;;;;;;;;;;;;;;;;;+;::;;;++++++:::::::::::::::::,,,,......,.,,,,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,: #########;;;;;;;;;;;;;;;;+;;;++;;;;;;;;;;;;:;:++;::::::::::::::,,,......:;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,:::::;;*###*;;;;;;;;;;;+;;;;;;;:+++;;;:+:++;:*;;;:;;;;;;::;;::::::::::::::::,,,........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;*;*+;;*;;++;+++;++;++;++++;:::;;;+;;;;;::::::::::::::::::,,,...... .,,,,,,,,,,,,,,,,,,,
*;+++++++++#+;++**+;++++++++++++;+***+;*;+*;+**;++;;+;;++;++;++;+++;;++;;;;;;;;:;::::::::::::::::::,,,,,..... .,,,,,,,,
*+++++++++++++#+++++++++++++++++++**+++++**++**+++**+;;+*;+*+:+;;+;;++;++++:+;;+;;++++;;;::::::::::::::::::::::,,,.....
#**+++++++++++++++++++++++*##*++++#*+++++**++**++*++*++**+;++;+;+*+;*+;*+:+:;;;;;:+:;++:;+++++:::::::::::::::::::::::::
##*******+++++++++++++++++++++++++#####*+#*++*#++*++*++*#++*++*++**+***+;;*++**;**;;;;;;;;;;::;;;;;:::::::::::;::::::::
+#####************+++*++++++++++++++++++++*++##+**++*++**++**+*++**+**+++++;**;;;;;;;;;*;;;*;**:;;;;;;::;;:;:;;:;;;;;;;
+::########*******************************++++*++++++++*#++##+*++*#++*++++++**+++++++;;;;;;;;;;;;;;;;;+;;;;+:;;;;;;;;;;
+:::,##########*******************************#*+****+++++++++++++++++*******++++++++++;;;;;;;;;;;;;;;::,,,,.. +;,**,.:
+,,,,,,,#############*#**********************#*###*#**#+#*#***+****++++++++++++++++++;;::;;;;:;;;+;;#####++:::;::,. +++
+.........#*##++*#######################*****************#*#*#*#***********++++++++;;+;, ;++++++;;########*+;;;;;;:::, 
+........,*+ *+#*++##################################*#*************************++++*##+*+;;;;;*###########++;;;;;::;;:
;...........*##+#++.....+#*########################################*********************####################+;;;;*;:;;;
;.............+;*,...................#########################################***********########*##########*++++;**;++
;.............#*#,.....................##########++##############################***********#####*##########*++++**+#++
;...............+..................... ##########*+++++#++**######################*##############+###########+++++#++++
;              :##          ...........###########****####*##########  +*#########################*#########***********
;            ####+*.                   *##########****##########+           *******################*########***********
;  .         #####+                    +########################                   ############**####+**###############
; ............## *                      +######################                    ###################**###############
;                                        #+***##############*                       #####.       *####:   ............:
;....                                    ...,##############                          :##+             *            ...#
;..      . ..    .....     .        .......................                          ####,                      .###.##
;    .... ....,,.,,,,,,,,,,,,,,,,,,...,,,,,,,................                  .### #### :                      #######
;.   .  .. ............... ....................................                #############                     ######
;.....                                       .................                 ;###############                   . ###
;..........                                     ...............                  , ############                  ..... 
;...................                                   .............. ....             ########       ...    ..........
;............                                                ..........................................................
;...............                                                .................... ........,,,,......................
;.....................         ....                                ............... ....................................
;.....    . .............                                            ..................................................
;.........        ..........                                        ...................................................
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::::::::::::::::::::::::,::,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:,:,:::::,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,.,,::::::::::::::::,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::,,,,,.......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;;;:;;::;;;;;;:++;::::::::::::::::::::,,,,...... ,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;;;;;;;+;;;;;;;;+++::++;;:::::::::::::::::::::::::,,,,....., :;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#;;;;;;;;;;;;;;;;;;;;;;++;;;;;*+;;;;;;;;;;++:;::::;:::::::::::::::::,,,,.....,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#;;;;;;;;;;;;;;;;;;;;;;+++++;;;+++++++++;;++;::;;;;:;;;;:;:::::;::::::::::::::::,,,,.....,..,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;+;;+;;;;;+;+;*++;*+*++;;#+++;;++;;++;;++;++;+;+++;;;++;;;;;;;;;::::::::::::::::::::::::,,,,........,,,,,,,,,,,,,,,
*++##*+++++++++++++++++;**+++*+*+++;*++*+*;++;;+;;;;;;++;++:+;+;+;;++;;;;+;;;;:;+;::::+;::::::::::::::::,,,,........,,,
*+++++++++++++++++++++++**++++++**++**++*+;+++;++;;;;+++;;+;;++;;+;++;;;;;+;;++;:;;;++;:::::::::;:::;:::::::::::::::,,,
*++++++++++++++++*#++++***++++++*+++**++*++**++**+;**;+*++**;*+**+*++*;;;;;;;;;;++++++++++;;:;::;*+::::::::::::::::::::
*++++++++++++++++++++++*####*#+#*++**+++*++**++*+++*++**++**+****+;;**+*+;*;*;;;+;*;;;;+;;;;;;;;;::::::::::::;;;;;;:;;:
#**********+**++*+++++++++++++++++++##+*#++##+**+***++**++**+**+++++++**;;;;;;;;;;*;+;;+*;*+;;;;;;;:+;;;;;;;;;;;;;;;;;;
#******************************+***++*+++++++++*#++##*##++*+++**++++++**++++++++;;;;;;;;;;;;;;;;;;;+;;;;*;:*;;;;;;;;;;;
##*#********************************#***+*****+*+++++++++++++++#*#+***#+++++++++++;;;;;;;;;;;;;;++++:::::,. ++,++++++++
############*##********************#**#*#*##*#**###**********+++++++++++++++++++;;:;;::;;;++++######++::::::::,.,+***++
##+*###########################*****************##**#**#*************+++++++++;;+;, ;+++++;;;########++;;;;;;;:::,.;*##
*++*+++*####################################*******************************++++*##**;;;;;+*###########+;;;;;;;;;;;:::;#
++#*+++;..+###############################################************************####################++;;;;+;+;;;;;;+*
;...##.................:################################################************#######*########+#**+++++*+++++++++
;+#*#;,..................,,,,....##########################################***********#####*##########**++++#++++++++++
;...++...........................##########**+++++*#*#############################*******###*###########++++*#+#+++++++
;...++...........................########*#*#+++**#****##########**#########################+########*#****+**++**++++#
+.######.........................*##########*****###*#######.        #*######################*######*#****************#
+*####*#.........................+##########****#############                   ##############**#########*##*********##
;.######   .......................*########################:                    #######################################
;.................................:+#####################      .                 ######    ;#########.....,  ,      ##+
;...................................**#################*                         ######             #............   +##
;      ............................. ... +#*######*##                            .####;           ..#.........+##  ###+
;      .........................                                 ..........,,. ..##+###......................##########
;  .................................... ................            ........###########*.,,..................##########
;.........................................................                  #############+. .     ............#########
+........,,,,,................................................ .            #################           ..........#####
+,,,,,,,,,,,,,,,,,,...............................................              :############                ........ #
+,,,,,,,,,,,,,....................................................        ....       ########                    ......
+......................................................................                                               .
;........................................................................ .                ..                          
;...............................................................................                                       
+...............................................................        ...........                                    
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::,,,,,,:::::::::::::::::::::::::,,::::::
+::::::::::::::::::::::::::::::,,,,,,,,,,,,:::::::::::::::::::::::::::::,,:::::::::::::::::::::::::::::,:::::::::::::::
+:::::::::::::::::::::,,,:,,,:,,::::::::,,,,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,::,::::::,,,,,,,,,,,,,,::::::::
+:::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:
+,,,,,.,..,:,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::;:;:::::::::::::::::::,,,,,......,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;++++++;:;;:::::::::::::::::::::,,,,,.......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;;+++;;;:+;;;;;;;;;;:::+;;:::::::::::::::::::,,,,,,...,:;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;+;;;;++;;;;;;++;;*:;;;;;;:+;;;;;;;;:::;;::::::::::::::::::::,,,,,....,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;*;;;;;++++++;;;++++++++++;:++;++;++*+;;;;;;:;;;;;;::::::::::::::::::::::::,,,,,.......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*+++;+;+*+***++++*+*;;+++;;++;++;;+++++;+++;;;++++;;;;;;;;;;;;;::;::+:;:::::::::::::::::::,,,,........:,,,,::,:::::::::
*+++++++++**+++;++**+++*+*+**+*++;+++;+;;;;+;;++;;;++;+;;+++:;;;+;;+::++;;;::;::+:::;:::::::::::::::::,,,,,.....,..::,:
*++++++++***++++++**+++**++**+;+++;++;;++++++;+*+;+++;++;++;;;;;++;:++;:;;;+::++;:::::::::;::::::;::::::::::::::::::,,,
*++#*++++#**++++++**+++**++**++**++**+++*+;+*+;**+*+*;*++*+*;*;;;;;;;;+;;:;++;++;+;;::::;:::::::::::::::::::::;::::::::
*++++++++*#######+##++***++*#++*#++**++**++**++**++***;;;;*++*;*+;*;;;;*;*;+;;;+;;;;;;;;::;;;::::::::::::;;;;;;;;;:::;:
*+++++*+++++++++++++*+*##++#*+*##+**+***#++**++**++**++++++;**+++;;;;;;;;+;*;;*;*;**;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#*********************++*++++++++++*#++#*#+*#+***++**+++++++**+++++++++;;;;;;;;;;;;;;;;;;;;**;;::*;+*;*;;;;::;;;::;++++
#**********************************+++++++++++++++++#*#++***#++++++++++++;;;;;;;;;;;;;+*+++::::::,..;;+;:++**#++++;;;;;
#*********************##*#*#****##*###*********+*++++++++++++++++++++++;;;;;;:;;;+++*######++:::::::::,.,,*#**++*######
###############*******************##******#*#***************+++++++++;;;;:.;++++++;#########++;;;;;;;;::::,,*##########
###############################***#*#****************************+++++*##**;;;;;;+*#########*+;;;;;;;+;;;;;::;#########
##############################################***************************####################++;;;;;;*+;;;;;;;#########
;..:#########################################################*************########*########+#*+++++++**++++++++########
;..................;+###########################################*************#####*##########**++++*+**++++++++*#######
;......................:##########++*##################################*********##*###########+++++*#*+++++++++*#######
;......................*##########*+++++*+*****####################################*##########**++++++++*+++++#########
;......................*###########******###*#######.,#*:;#*#######################+#########*****************#########
;......       .........+#########*#*******###########...........,+#******###########**########***************##########
;             .....     +###########################,... ................##############################################
;                       +*#########################......................,##########################*######**##########
;                   .....+*######################.........................######*.........#####.......       ####,.#   
;         ...         .....,###################.     ......................,##;...............#.....    .   # ####     
;..............                   ,+*##+:*#+              .................#.###.............. ......  ##########:.   .
;.............                                           .............###.####.#* ................... ##############+..
;.........                                    .    ..................#############,...................+################
;....................................................................#############+###.................,##.############
;..................,,,,,,,,.........,,,,,,,,,,,......................*#################.....................##########*
;.....................,,,,,..............,,,..,,..........................#############.........................#### ##
;.............................................................................####:###.................................
;......................................................................................................................
;......................................................................................................................
;.................................................................................................................   ..
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,:::,,,::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,::,,,,,:::,,,,,,:::::::::,:::::::,,,,.,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,:,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,..,,..,:,:::::::::::::::::::::::::::::::::::,::,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::,,,,,...,..,,:::,,,:,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;:::::::::::::::::::::::::,,,,,....,..,,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;;;;;;++;;:;:::::::::::::::::::::::,,,,,,...,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;+++;;;;;;;;+;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::,,,,,...,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*+;++++++++;;++;;++;;:;*;;;;;;;+;;;;;;:::::::;::::::::::::::::::::::::,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
**;;+++;;+++;+++;++++++;++++;;++++;;;:;;;;;;;;;;;;;+;:;::+::;::::::::::::::::::::::,,,,,....,..,,,,,,,,,,,,,,,,,,,,,,,,
**+++***;*+*+*++;;+++;+;;;;++;;++;;;+;;++;++++:;;;+;;;;+;;+;;;;::+++:::::;;:::::::::::::::::::::,,,,,,.......,,,,,,,,,,
#*+++**+++**++**+++++;+++++++;;*+;;++;;++;++;;+;;;+++;+;;++;:;+:;+:;+:;:::::::::;:::::::::::::::::::::::::::::,,,,,....
#*+++**++***++**++**+++**+;+*++*+*;*+*;*+*+++++;;;;;;;;;++;;;:;+:++++;;;;;::;::::::::::::::::::::::::::::::::::::::::::
##++*#*++#**+***++**+++**++**++**++****;+;;;++++++*;*;;;;;*;*;;;;;;;;;;;;;;;;;;;:;:::::::::::::::;;;;;;::;:;;;::::::;::
##++*##++##*+*#*++*#++**+++**++**++***+++++++**+;+;;;;;;;;;;+;+;;+;*;*;*;;;;;;;;:;;;;;;;;;;;;:;;;;;;;;;;;;;;:;::;++++++
#+*++++++++++++*++##+++###*##++*#+++**++++++++*++++++++++;;;;;;;;;;;;;;;;;;;;;;++;;;;;++;*;*:+:;;;+;;+++++++++++;;;;;;;
#**************++++++++++++++++*#*+++#***+*#***+++++++++++++;;;;;;;;;;;;+*+++:::::::,,..+++;:+####++;;;;;;;;;;*########
#****####****#*#*+***********+++++++++++++++++++++++++++++;;;;;;;;;::;*######++::::::::::,..,;###++*###################
#************####****#*#*#***##************+++++++++++++;++;;;+++++++*########+;;;;;;;;;;:::::,;*######################
####**#********************************************+++++*###+*;;;;;;;#########++;;;;;;;;;;;;;;::;######################
######################*#**********************************#####################+;;;;;;+;;;;;;;;;;;#####################
#########################################*******************###################++++++++*++;+++++++#####################
#################################################**************#####*##########*++++++++++++++++++**###################
;........;############################################***********###*###########++++++++**++++++++#*###################
;.........##########**+++++*########################################*###########+*++++++#+++++++++#####################
;.........##########**+++++*#*****########*##########################*#########******************######################
;........,############******#############.....:#######################*########******************######################
;.........*##########*****#*##############       ....... .;***#########**#*############################################
;.........+#############################                      #######.#################################################
;  ..  ....*######*####################                        #######   *###########.    #       ###...;#,....,+######
;           +#######################:                          +######   .. . ..  *##..           #*###..#.............
;             #####################                     ........ ####               ,        ## *#### ##   ............
;                   +*****#*####                  ..............# ###.               .     #############,.  ...........
;                                        ..................### ####*,#,                    ##############+:#*..........
;                                 ........   .............#############  ..................#################*#.........
;                   ...................... ...  ..........##############.###.................,,.##############*,,,,,,..
;     . .                              ...................###################,.........,,,,,,,,,,,*..#########,,,,,,,,,
;.............                         ........................##############................,,,,,,,,,###..#:,,,,,,,,,,
;......  .                          ................................########........................................,,,
;                              ...................................... .................................................
;                             .........................................................................................
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,
+..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,:,:,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::,,,,,,.,,..,::::,:;;;;::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::,,,,,,,,.,,..,::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;;;::::::::::::::::::::::::::::,,,,,,...,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;;;+;;;;;;;;;;;;::::::::::::::::::::::::::::::,,,,,,...,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*++++;;+++++;;;;;;;;;;;;;;;;;;++;;+::;;;::::::::::::::::::::::::::::,,,,,....,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;++;;+++;+;++;++;;++++;;;;+;;;+:+;++;;;;;;;;++::::::;:::::::::::::::::::::::::::,,,,,....,..,,,,,,,,,,,,,,,,,,,,,,,,
*;++++;;+++;;+++;;++;++;;+;;;;+;:;++;++;;;;;+;+;;+;:::::::::::;:::::::::::::::::::::::::::::::::::,,,,,,...,.,:,,,,,,,,
**+;*++++*+*;*+*;*+*;*+*;;;;;;;;;;;;;+;:;++++;++++:;;;;;::;:::;::::::::::::::::::::::::::::::::::::::::::::::::,::;++++
#+++**+++**;+*++**;+;++*+*++++*+*;;;;;*;+;;;;;;+;;;;;;;;;;;:;:;;:::::::::::::;;;;;;:;;;::::;;::::::::::;+++++++++;:;;;+
#+++**++***++***++++++++**+;;;;;;;;;;;*;*;*;;;*;*;*;*;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;::;::;;++*++++++;:;;;;;+*#######
##+###++*#*++***+++++++++*+++++++++++++;;;;;;;;;;;;;;;;;;;;;::+;;;;;*;*;*;+;;:;;;;;++*++++++;::;;;;+;+#################
**++##++*##+++*##*#*+*++**++++++++++++++;;;;;;;;;;;;++++::::::::,,.:+++;:++**##++;;;;;;;;;;*###########################
#+++++++++++++*++++++*##++++++++++++++++;;;;;;;;;;#####*++;::::::::::,..,,+##*+++*#####################################
#***************++++++++++++++++++++;;;++++++++++########++;;;;;;;;;::::::,,+##########################################
#*#*********************+*+++++++++;++++  +;;::;#########++;;;;;;;;+;;;;;;;::;#########################################
#******************************+*****#####;+*#############++;;;;;;;++;;;;;;;;;+###############+############+++++++###++
########*******************************########*##########+++;;+++*+++++;;;;;++##########################+++***+*++++++
##########################****************#####*##########*+++++++****+++++++++**#########################+++++++++++++
##############################**************###*###########++++++*++*++++++++++**######################*###++++++++++++
#######################################****#**#**##########+++++++*+*++++++++++#########################**#************
#+++++++##########################**############*##########****+*******+*+*++*##############################***********
#*+++++*###****#################################**########********************##############################***********
##*****################....:#####################**#######*##*#**************########################################**
##*****#################:.............. .:*############################################################################
#######################......................####### ,#################################################################
######################       ......          .########   ;###########     ,      ####,  .*            ;##*#############
##################,.          .........       :#######             ##           # ####,  ;                      ..   + 
#################            .............      +##+                 .    .###+##### #,:                ...........    
###############                                 ,###*                .   :#############*,        ..................    
;                                         .#  ###,# ##                   ###############;;##+....................      
;                                        ############# :                 .#################### ........................
;                                       ,############## ,**                .   ###############.........................
;                                        ###################,.....              :*  #########;.........................
;                                         *#  ###############                        ### .+:...........................
;                            ..................*#*.#########.                       ...................................
;..                           .... ..............   ###. *:                      ......................................
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::,,,,,,,,,..,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,:,:,,,,,,,,
+:::::::::::::::::::::,,,,,,,,,..,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,:,,;+
+:;::::::::::::::::::::::::::::::::::,,,,,,,,,,,. .:,::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,;++++++;;;
+:;;;;+;;;;;;;;;+:;:;:::::::::::::::::::::::::::::::::,,,,,,,,,,,...::,:::,,,,,,,,,,,,,,,,,,,,,,,,,,:;++++++++;;;+#####
++;+;++;;;;++;;++;+::::::::::;::;::::;;:::::::::::::::::::::::::::::::,,,,,,,,.,,,..,::,,,,,;++++++++;;;+;*############
**;+;+;+;:;;;+;+;+;;;;;;;;::;**+;::::::::::::::::::::::;:::::::::::::::::::::::::::;++*+++++;:;;++*####################
*;;;++;;;;;;;;;:;;;;;;;;;;;;;;;;;:::::::::::;;:;;;;::;;::;;;:;::::;;::::,;;++++++++;:;;;++*############################
*;;;;+*;*;++;;;*;+;;;;;;;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;;;;:::;+++++++++;:;;;;;+#####################################
*;;;;;;;;;;;;;;*;*;+++*;;;;;;;;+;+;;;;;:;;;;;;;;;;;;:;;++++++++++;;;;++;+###########################################:::
*+++++++;;;+;;;;;;;;;.,,:::,,,,,,+++;;:*;+,;++++*++++++::;;;;;++###############################################;;;;;;;;
*++++++++++;;;;;;;###*++:::::::::::,,.:+++++++++++++++*###################################################;;;;;;;;;;;;;
*++++++;;;;;;;;;*######++;;;:;;;;::::::::,.;*########################################################+;;;;;;;;;;;;;;;;;
*++;;;+++++++++*#######*+;;;;;;;;;;;;;;;::::::*#####################################################***+*++;;;;;;;;;;;;
*+;++++*,;+;::;#########++;;;;;;;;;+;;;;;;;;;;;*#################################+++++######;++++++;##*++;+++++++++*+*+
#***######+*############++;;;;;;+++++;;;;;;;;;;*#############################+++++++++++++++++++++++++++++++++;++++++++
#******#######*#########*+++++++++++++++;;;;;;++##############################+++++++*##+++++++++++++++++++++++++++++++
#*********####*#########**+++++++++**+++++++++++**#########+###################++++++++++++++++++++++++++++++++++++++++
#************#*###########++++++*++*++++++++++++**##########################*##***++*++++*+++++++++++++++++++++++++++++
###*************##########++++++++*#*++++++++++*############################***#**************************+**+++**+++++
#**###########**#########****************+*+**+##################################**************************************
###############+#########*********************##################################*#*************************************
################*#######*##*****#************##############################*###################*********************###
;.,;*####*******#***###########################################################################################*####***
+................########################*#############################################################################
+,,,,,,,,,,,,,,,,,#########,;#############*,,,:,,...;##++,,,,;#,,,,,,,,,,.,:*#*########################################
+,,,,,,,,,,,,,,,,,;########,,,,,,,,,,######,,,,,,,,:*,###+,,,,*....,,,,...             .......*,+#*##################*#
+,,,,,,,,,,,,,,,,,,#######*,,,,,,,,,,,,,,,#,,,.*,,###:#+.##,........                    .......,....                   
+,,,,,,,,,,,,,,,,,,,#####:,,,,,,,,,,,,,,,,,,:############## :                                                          
+,,,,,,,,,,,,,,,,,,*::###;:,,,,,............################                                                           
+,,,,,,,,,,,,:#########+,*;;,....           *####################+                                                     
+,,,,,,,,,,,;##############,..               #### ################                                                     
+,,,,,,,,,,,*############### ####                 .####:##########                                          ...........
+,,,,,,,,,,.,#####################                      +########                                    ................. 
+.........    ,;  :###############                                                     ......................          
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,;
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:+++++;;;
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,;+++++;;;;;*####
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,;+++++;;;;;+########+:::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:++++;+;;;;;*#######+*#+,,::::::
+,,,,,,,,,,..,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:++++;;;;;;;+#########*###########::::,+
+:::::::::::::::::,,,,,,,,,,,,...,::::::::::::::::::::::::::::::::::,:,:;+++;++;;;;;+###########################,::::++
+:::::::::::::::::::::::::::::::::::::,,,,,,,,,,,...,,,,,,:,,,,;++++;+;+;;;;;*#############################:,,,,,,,++++
+:;::::::::::::::::::::::::::::::::::::::::::::::::::,:;;++++;+;;;;;;+################################*,,,,,,,,,,,+++++
+:;:::::::::::::::::::::::::::::::::::::::::::;+++++++;;;;;;;+####################################,,,,,,,,,,,,,,:;+++++
+:;:::::::::::::::::::::::::::::::::,;;+++;++++;:;;;;+###########################################*,..... .,,,;+::++++++
+:;:;::::::::::::::::::;::::;;++++++++;:;;;;;+##########################################+:::::####*+:::::::,,,,,:;+++++
++;;;;;;+;;+;:;;::;+++*++++++;:;;;;;+*#############################################*::::::::::;:::::::::::::::::::+++++
*+++;:::;+++++**+++;;;;;;;;;*##################################################;;;;;;;;;;;;;;;;;;;;;;;:::::;;:::::+;;;+
+:,,.,:;++*****+;++*######################################################+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;++++++
+:::::::,,:+*##########################################################*++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
+;;;;::::::::*###################################################;+####**++*;*;*;*++++*;*;*;+;;;;;;;;;;;;;;;;;;++;+++++
*+;;;;;;;;;;;;*###################################++++++####*+++++++++;;+#+++;;;++;;;;;;*;*;*++++++*+*;*;*;;;;+++++++++
*+;;;;;;;;;;;;#################################*+++++++++++++++++++++++++++++++++++++;++++;;+++++++++++++++++*++**+++++
*++;;;;;;;;;;+**################################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+****++
#*+++++++++++++**############;###################++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++
#*++++++++++++***#############################**##++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++*+**
**++++++++++++################################***#*******************+**+*++++++++++++++++++++++++++*********++++++++++
*++++++++++++*#####################################*****************************************+++++*******#+*************
#************#####################################********************************************#######******************
#***********##################################***###***###*##******************************######*******************###
#*##*##########################################################################*##*****###************#####*###########
#################################################################################################################;.....
####################*######*##*;##+.,,,,,,.,:+##########################################################*.,,,,,,.......
+,,,,#########:,,,;,,;#####:,,,,.*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,+##########################+,,,,,,,,,,.............
+,,,,,,,,,,,,*;,,,,,#:,##,#*+,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...........  .           
+,,,,,,,,,,,,,#########+#:#,,;,,,,,,,.........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........                       
+,,,,,,,,,,,,################:,+,,,,,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,....                              
+,,,,,,,,,,,,#################:####:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.. .                                      
+,,,,,,,,,,,,*######################,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....                                            
*,,,,,,,,,,,,,:##:,;################:,,,,,,,,.,,,,,,,,,,,,,,,,......                                                   
####:,,,,,,,,,,,,,,,:###,:##########,,,,,.....................                                                         
$*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,+;;;;+*#####
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:+;;;++*####*:
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;+++##*#####
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;:;+;;+#########
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:+;;+;;:;+########*;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:++;+;;;;;*##++++*#####;;;;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:++;;;;::;+####;+++++++*###;;;;;;;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,;++;+;;:;;+###*#+,,:;;+++++++*#+;;;;;;;;;;
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,:,,,,,,,,,,,,,,,:,,::,,;++;;;;::;+#######:,,:,,:,;++++++++*;;;;;;;;;;;;;
+,,,,,:::,,::::::::,::::::::::::::::::::::::::::::::::::::,::,:+++;+;;:;;+########+,,:::::,::::;+++++++++;;;;;;;;;;;;##
+::::,:::::::::::::::::::::::::::::::::::::::::::::::,,;++;;+;;:;;+###########+,::,,,:,,::,::;+++++++++;;;;;;;;;;;#####
+:::::::::::::::::::::::::::::::::::::::::::::,:;++;;;;;;;;+#########:#####+::::::,::,,,:,::+++++++++++;;;;;;;*########
+:::::::::::::::::::::::::::::::::::::,,;++;;+;;;;;;+##########+#############+::::::,,,,,,;+++++++++++;;;;;############
+,....,::::::::::::::::::::::,:,:;++;;;;;;;;;*############################+,,,,,,,,,,,,,,++++++++++++;;;###############
+:::::::::,:,,,,,,,,,,,.:++++;;;;;;;;;*###############################:,,,,,,,,,,,,,,,,:;+++++++++++;;#################
+::::::::::::::,;;+++;;;;;;;;;+*#################################*,,,,,,,,,,,,,,,,,,,,;;+++++++++++*##################*
+:::::::;;++;++;;;;;;;;+*####################################:,.,.... .,,,,,,,,,,,,,;;;++++++++++*##################;;;
*+++;;;;;;;;;;;+*###########################################**;:::::::::,,,,,,,....,:+++++++++++*###############;;;;;;;
*;;;;;;+*###########################################;:::::+###*+:::::::::::::::::::::,:;;+++++++############;;;;;;;;;;:
*##############################################*:::::::::::::::::::::::::::::::::::::::;;;;;;++;+#######:;;+;;;;;;;;;;,
###########################################;:;::;;;;:::;;;;:;::::::::::::::::::::;::::+;;;;;;;;;;*###+::::::::+;;;;;;,,
#######################################;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;+*+;;+++++++++++##:::::::::::::::::,,,
###################################*++++;*;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:++++++++++++*:::::::::;;;;;::::::::
##################################***++*;*+++;*;+++*;*;++;+;*+++;*;+;;;;;;;;;;;;;;;++;+++++++++:;;;;;;;+;;;;;:::;+++###
###############*;+++######;;;+;;;;;*#*+;;;;;;;;;;;;;;;;;;;;;+;++;*;++++;*;*;++;;;++++++++++++;;;;;;+*+++++++*##########
###########++++++++++*++++++++++++++++++++++++++++++;;;;;;;+;;;;;;;;;;;;;;;;;;;;+++++*+++++;;;;;;;;++*#################
############*+++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++******+***++++++++++;++++*############***
#############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++*+**************
##########*###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+*+++**#**+**+++++++++++************
#########****#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++*********************#*
############**#***********************++++++++++++++++++++++++++++++********#++++++++**********************#######*: ..
################************************************************+******##+**************************########+ .........
#############*************************************************###*##************************#########* ................
###########*****######************************************#####*****************################**.....................
####################################################**#************#*#*################.........+:.....................
#####**#####################################################################*#*.............,,,,,,,,,,,,,,,,,,,,,,,,,,,
;......................,;+###########################################*,.,,,,,,,,,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;...........,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,:+++*+:,,,,,,,,,,,,,,,,,,,,,,,,,............,,,,,,,,,,,,,,,,,,,,,,,
+....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.............,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...............,,,,,,,,,,.......
+,,,,...........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..............................  
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++###############+++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;++##############;;,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:+;;:+++#############;;;:,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:::;*#####*##########+;;;;;,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:##########*+++##########;;;;;;;,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+;;;;*####*;;++++++########;;;;;;;;;:,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:+;;;;:;;+##;,,,;:+++++++######;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;+;;;;;:;*###+,,,,,,:;;++++++*####;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:+;;;;;;;;*#####,,,,,,,,,,;;+++++++*##+;;;;;;;;;;;;;;##,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:++;;;;;;;+#######,,,,,,,,,,,,,:;++++++++*#;;;;;;;;;;;;;;;###:,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,++;;+;::;;*########:,,,,,,,,,,,,,,,,;;+++++++++;;;;;;;;;;;+;;#####+,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,;+;;+;;;;;+##########:,,,,,,,,,,,,,,,,,,,,;++++++++++;;;;;;;;;;;;########,,,,,::,,,,,,,:,,,,,,,,,,
+,,,,,,,,,,,,:;+;;+;;;;;+##########*+,,,,,,,,,,,,,,,,,,,,,,,,:+++++++++++;;;;;;;;;########**#+,:,,:::,:,,,:::::::::::,,
+,,,,,:;+;;+;;;;;+*#########:###;,,,,,,,,:,,,,::,,,:,,,,,,,,;++++++++++;;;;;;;;##############,,::,:,,,,,,,,,,,,,:::::,,
*+;;+;;;;;;*##########*;##########+:,,,:,:::::::::::,,,,,,:;+++++++++++;;;;+################;::::::,,,,,,,,,,,,,,,,,,,,
+;;;+############+###############*,,,,:,::,::::::,::,:,,,;;++++++++++;;;;###################,:::::,,,,,,,,,,,,,,,,,,,,,
#############################+,,,,,,,::,,,:,,,,:,::,,,,:;++++++++++++;*###################*:,,,,,,,,,,,,,,,,,,,,,,,,,,,
#########################+:,,,,,,,,,,,,,,,,:::,,,,,,,,;;+++++++++++;####################+;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#####################;,,,,,,,,,,,,.. ..,,,,,,,,,,,,,+;;+++++++++++*##################+;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
##################*;:::::::::::::::::,,,,,,,,,,,,,,,:;+++++++++++*###############+;;;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
##################**+;:::::::::::::::::::::::::::::::::;;;;;;;++*############+;;;;;;;;;;;,,,,,,,,,,,,,,,:::::::::::::::
########+:::::::::+##*;:::::::::::::::::::::::::::::::;;;;;;;;;;;+#######:::;;;;:;;;:;;;:,,,,,,,,,,,,,:::::::::::::::::
####;:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;+####;::::::::::+;:::::,,,,,,,,,,,,,,,,,,,,,,:,,:;*###
+;;;:;;;;;;;;;;;;;::;;;;;::::;::::::::::::::::::;;::;++++++;;++++##*:::::::::::::::::::..,,,,,,,,,,,,,;;+*#############
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;;;::;++++++++++++++:::::::::::;;:::::::::::::;;*#####################**,
*+*;++;+++*;++;*;++;+;;+;;;;;;;;;;;;;;;;;;;;;;;;;:++;++++++++++:::::;;;;+;;;;;::::+++**####################**,,,,,,,,,,
*;;;;;;;;;;;+;;*;++;*++*;++;*;+++*;+++*;*+++;;;;;++++++++++++;;;;;;;+++;;;;+++*###################***;;*,,,,,,,,,,,,,,,
*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;+;;;+++++*++++++;;;;;;;;;;+#######################*;;;;;;;###,,,,,,,,,,,,,,,
*++++++++++++++++;;;;;;+++;;;;;;;;;;;;;;;;;;;*+++++*+*++++;++;+;;;;;;++*##############*******+++;;;;;##*,,.............
*+++++++++++++++++++++++++++++++++++++++++;*****+*****++++++++++++++++++++*******************+++++++++++,..............
*++++++++++++++++++++++++++++++++++++++++**********++++*+++***++++++++++++++************************+..................
*+++++++++++++++++++++++++++++++++++++***********+++*++++++#***++++++++*********************##.........................
*+++++++++++++++++++++++++++++++++++*********+++++++++++++++++++*****************####**:...............................
*++++++++++++++++++++++++++++++++*********++++++++++*********************#####**+......................................
#********+********+***++++++*+#*******++***************************######*.............................................
#************************+*#**##****************************#*####***..................................................
#**********************###********************##****##*###*+....,*+....................................................
#****************************************#########** .............;....................................................
#######*#######*###*#********###########***+.........................................................,,..,,,,,,,,,,,,,,
###############################*##+..................................,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+.::..............,.++.,....................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.......................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,...........................,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,...............................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
$*+++++++++++++++++++++++++++++++++++++++*+++++################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+;;;;:*################;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:;;;;;++###############;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+;;;;+++#############+;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,:++++:,,:+;;;+++*############;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,:;*++########+,,,,,,,+;;+++++*##########;;;;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,:*##########,,,,,,,,,,,:;;++++++*########;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,+;;;;*###*#:,,,,,,,,,,,,,,,;;;++++++*######;;;;;;;;;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;+*##+,,,,,,,,,,,,,,,,,,:;;+++++++*####;;;;;;;;;;;;;;;+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
####:,,,,,,,,,,,,,,,,,,,,,;;++++++++*##+;;;;;;;;;;;;;;;##,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,:;+++++++++##;;;;;;;;;;;;;;;;###;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,:,,,,::::::,,,,,,,,,,;+++++++++++;;;;;;;;;;;;;;;######,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:,:::::::::::,,,,,,,:;++++++++++;;;;;;;;;;;;;;########:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::,,,,,;+++++++++++;;;;;;;;;;;###########*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::,,,,:;+++++++++++;;;;;;;;+##############:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::,::
+:::::::::,:::,,,;++++++++++++;;;;;;#################+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::,::
+,,,::::,,,,,,,:;++++++++++++;;;;####################,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,,::::::::
+,,,,,,,,,,,,,;;++++++++++++;;+#####################:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:
+,,,,,,,,,,,:++++++++++++++;######################;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,;;+++++++++++++#####################+;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,++:;++++++++++++*###################;;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,:;+++++++++++*###############*;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::;;;;;;;;+++############+:;;;;;;;:;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::;;;;;;;;;;;;*#######;;::::;;:;:;::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:+**#############*,.,,,,,,,,,,,,,,,,,,,,
+:::::::::+;+;;;;;;;;;;*####::::::::::::::;+;:::,,,,,,,,,,,,,..,,,,.,;+**###############**............................,
+::::::::++++++++++++++##+:::::::::::::::::::::,,,..,...,.:;+#**################**+....................................
+::;::::++++++++++++++#:::::::::;;;;:;;::::::::::+;+***#################***:...........................................
+;;;;:++;+++++++++++;::::::;;;+:;;;;::::+++****##################**,...................................................
+;;;++;+++++++++++;;;;;;;;++;;;;;+++****################**++;;;;+*.....................................................
*;;+++++++++++++;;;;;;;;;;;*#****##################***+;;;;;;;+###.....................................................
++++++++*++*++;;;;;;;;;;;;;++*###############*********+++;;;;;+##*.....................................................
***+**+****++++++++++++++;++++*++********************++++++++++++;.....................................................
********+++++++++++++++++++++++++++*******************++++++**.........................................................
#***#****++***++++**+++++++++++++++********************:...............................................................
**+++++++++++++++++++++++++++*******************+......................................................................
*++++++++++++++++++++*******************#*.............................................................................
*+++++++++++++*+*******************:...................................................................................
*++++***********************+..........................................................................................
#***#********************:.............................................................................................
#*************:........,*..............................................................................................
#*****+................................................................................................................
;......................................................................................................................
;...............................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,,,
+..........................,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,.................
$*++++*+++++++*##############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,:+;;;;;;*################,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,+;;;;;;#################*:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
++;;;;++################*;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;+++###############+;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;++++##############;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*++++############;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*++*##########;;;;;;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*+*########;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
**######;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#####;;;;;;;;;;;;;;;;*+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
##+;;;;;;;;;;;;;;;;*##,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;;;;;;;;;;;####;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;;;;;;;;######*,,,:,::::,,,,,:::,,:,:::::::,,:::::,,:,:,:,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;;;;*#########,,,:::::::::::::::::::::::::::::::,::::::,::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;########*###;,,:::::::::::::::::::::::,::::::::::::::::::,::,,::,,,,,,:::,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;################,::::::::::::::::::,,,:::::::,:,:,,,,,,:::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
##################:,:::::::::::::::,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#################*,,,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#################,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
###############;:,,::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
############;;;;,,::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
########+;;;;;;::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
####+;;;;;;;;;::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+;;;;;;;;;;;;;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;;;;;;;:::,,,,,,,,,,,,,,,,,,,,,,,,,,,.:++****##########*,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::;;;;::::::,,,,,,,,,,,,,,,,,,,,;+******########*#**+.,,,,,,.,..,,,,,,,,,,,..,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,....
+::::::::::,,,,,,,,,,,.:;+******##########****#,..,,,.,,,..,,,.........................,,.,,,,,,.......................
+:::::::::::::+++*******############****:,,,,,,,,,.....................................................................
+::;;:+++********############****,...,,,,,,,,,,,,,.....................................................................
*+*********###########****;;;;;*,,,,,,,,,,,............................................................................
#****#######*******+;;;;;;;;+###,,,,,,,,,,,,,,,,,......................................................................
#********#********++;;;;;;;+###*,,,,,,,,,,,............................................................................
#****************+++++++++++++++.,.....................................................................................
****************++++++++++++++,........................................................................................
#++++**********++++++++*...............................................................................................
*+++++***********+.....................................................................................................
***********............................................................................................................
#***;..................................................................................................................
+......................................................................................................................
;......................................................................................................................
;......................................................................................................................
;..............................................................................................................,,,,,,,,
;...............................................................................................,,,,,,,,,,,,,,,,,,,,,,,
$##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::,,,,,,,:::::::::,,,,,,,,,,,,,,,,,,,,,,
+,:,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,:,,,,,,::::::,:::::,:::,:::::::::::::::::::,,,,,,,,:,,,,,,,,,,,,,
+::::::::::,,,,,,,,,,:,,,,,,,,,,,,,,::::::::::::,:,,:::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,::,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::::::,:,::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::;+******######***#,::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::;+*******########***+:::::::::::::::::::::::::::::::::::,,:::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#*****#####**#****#,::::::::::::::::::,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
########***##,,,,:::::::::,,,,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
####***:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;;;+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
*;;##*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
**####,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..........,............
*;*##*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,..,,...............................
*+++++.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...............................................,,,,,,
#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................................................,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..............................................,,,..,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,...................................................................,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,.,,,..,,.,,,,,,,.............................................................................
+,,,,,,,,,.............................................................................................................
+......................................................................................................................
$*++++;+++;+;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,:,:,::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,:::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::,:,::::::::,:::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::,,,,,,,,,,,,,,,,,,,,:,,,,,,:,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::,::::::::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
****++++::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:::,
#*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,
+:::::::::::::::,,,:,,,,,,,,,,,,,,:::::::,,,:::::::::::::::::::,:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,.,..............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+..,,..,,,,,................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+.................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+.....................................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................,,,,,,
$*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;;;;;;++;;;;;;;;;;;+;;+;;;;;;;;;;;;;;;;;+
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,,::,:::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:,:,,,,,,::,::,,,::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,:,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::::::::::,:::,,,,,,,,,,:::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+:::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,..,,.......,,,,,,,,,,
+:::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........................................
+:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,,,..,...............................................
$*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::,::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,:::::,,:::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,::,,,:,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,::::::::,:,::,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,:::::,,:,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::::::::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,:::::,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,::,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,:::,:,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:,,,:::,:,,,,,,,,::,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+,,,:::::::::,,:,,,,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,::::::
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,:,,,,,,,,,,,,,,,,,,,,,,,:,,,
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
$