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