Outils personnels

J.O. d'hiver

De Luk

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