:::::::::::::::::::::::::::::::::::::;++*%%%SSSSSSSSS%%%%%%%%%%%%%SSS######SS%%%%%%%%SS##########S%%?%SS######SSS%%%%?%S###SS%%SS#SS%SS#########SS%%?%%%%%%%%%%%%%%S#######SS%?*;;:::::::::;;;;:::;;;;;:::::::::::::;;;;;;;;;;:::::::::::::::::::::::;;;;;;;;;;;;::::::::::::::::::::::;;;;;;;;;;;+*********
:::::::::::::::::::::::::::::::::::::;++?%%SSSSSSSSSS%%%%%%%%%%%%%SSS######SSS%%%%%%%SS#########SS%%?%SS#######SSS%%%%%S###SS%%SS##S%%S########SS%%%%%%%%%%%%%%%%%%SS#####SSS%?*+;:::::::::;;;;;::;;;;;;::::::::::::;;;;;;;;;;::::::::::::::::::::::;;;;;;;;;;;;;::::::::::::::::::::::;;;;;;;;;;;+***??***?
:::::::::::::::::::::::::::::::::::::;++?%%%SSSSSSSSS%%%???%%%%%%%SS#######SSS%%%%%%SS###########SS%%%SS#######SSS%%%%SS###S%%%S###S%SS########SS%%%%%%%%%%%%%%%%%%%SSSSSSSS%%?*+;:::::::::;;;;;;;;;;;;;;:::::::::::;;;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;;::::::::::::::::::::::;;;;;;;;;;;+*?????**?
::::::::::::::::::::::::::::::::::::;;+*?%%SSSSSSSSSS%%%?????%%%%%SSS######SSSS%%%%%SS###########SS%%%SS#######SSS%%%%SS##SS%%SS###S%SS#########SS%%%%%%%%%%%%%%%%%%%SSSSSS%%%?*++;;;:::::;;;;;;;;;;;;;;:::::::::::;;;;;;;;;;;;:::::::::::::::::::;;;;;;;;;;;;;;;:::::::::::::::::::::;;;;;;;;;;;;+??????*??
::::::::::::::::::::::::::::::::::::;;+*?%%SSSSSSSSSS%%??????%%%%%SSS######SSSS%%%%%SS###########SS%%%SSS######SSS%%%%SS##SS%%SSS#SS%SS########SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%??**+++;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;;;;;;;;::::::::::::::::::;;;;;;;;;;;;;;;::::::::::::::::::::;;;;;;;;;;;;;*?????????
:::::::::::::::::::::;::::::::::::::;;+*?%%SSSSSSSSSS%%%%%%%%%%%%%SSS######SSS%%%%%%SS##########SSS%%%%SSS####SSSS%%%%SS##SS%%%%SSS%%%%SS###SSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%???**+++++++;;;;;;;;;;;;;;;;;::::::::;;;;;;;;;;;;;;;::::::::::::::::;;;;;;;;;;;;;;;;::::::::::::::::::::;;;;;;;;;;;;;*?????????
::::::::::::::::::::;;;:::::::::::::;;+*?%%SSSSSSSSSS%%%%%%%%%%%%%SSS#####SSSS%%%%%%SSS#SSSSSSSSSS%%%%%%SSSSSSSSSS%%%%SSSSS%%%%%%%%%??%%%%S%%%%%??%%%%%%%%%%%%%%%%%%%%%%%%%?????**++++++++++;;;;;;;;;;;;;;;::::::;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;;;;;;;;;:::::::::::;:::::;::;;;;;;;;;;;;+*?????????
::;:::::::::::::;;;;;;;;;::::::::::;;;+*?%%SSSSSSSSSS%%%%%%%%%%%%%SSS#####SSSSS%%%%%%%%%%%SSSSSSSSSS%%%%%%%%%%%%%%%%%%SSSS%%%%%%%?????????????????????????????????%%%%%%%%?????**+++++++***+++;;;;;;;;;;;;;:::::;;;;;++++;;;;;;;;::::::::::::::;;;;;;;;;;;;;;;;;;;:::::::::;;;;::;;;:;;;;;;;;;;;;+*?????????
:;;::::::::::::;;;;;;;;;;;;:::::::;;;;+*?%%SSSSSSSSSS%%%%%%%%%%%%%SSS######SSS%%%%%%%%%%%%%SSSSSSSS%%%S%%%%%%%%%%%%%%%%SSSS%%????????????????????????????????????????%%%%%%%?????****??????****+++++;;;;;;;;:::;;;;;++++++;;;;;;;::::;;;;;;:;;;;;;;;;;;++;;;;;;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;+*?????????
;;;:::::::::::;;;;;;;;;;;;;;;:::::;;;++*?%%SSSSSSSSSS%%%%%%%%%%%%%SSS######SSS%%%%%%%%%%%%SS%%%%%%%%%%%%%%%%%%%%%%%%%%%SSS%%%??????????????????????????????????????????%%%%%%%%%%%%%%%%%%%?????*****+++;;;;;;;;;;;++***+++;;;;;;;;;:;;;;;;;;;;;;;;;;;+++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+??????????
;;;;::::::::::;;;;;;;;;;;;;;::::;;;;;+*?%%SSSSSSSSSSS%%%%%%%%%%%%%SSSSS###SSS%%%%%%%%%%%%S%%%%%%%%%%%%%%%%%%%%%?????%%%%%%%????????????????????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????**+++;;;;;;;++****++++;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+??????????
;;;;::::::::::;;;;;;;;;;;;;;;::;;;;;;+*?%SSSSSSSSSSSS%%%%%%%%%%%%%SSSSSS##SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%???????????????????????????????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????**+++++++****++++++++;;;;;;;;;;;;;;;;;;;;;;;;++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;;;*??????????
;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;++*?%SSSSSSSSSSSS%%%%%%%%%%%%%SSSSSS#SSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%???????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SS%%%%%%%%%%%%%????????????**+++++++++++;;;;;;;;;;;;;;;;;;;;;+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;+++++;;;;+*??????????
;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;++*?%SSSSSSSSSSSS%%%%%%%%%%%%%SSSSSSSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????????????????%%%%%%SSSSSSSSSSSSSSSSSS%%%%%%%%%%%%%%%SSSS%%%%%%%%%%%%%SSSSSSSSSSSS%%%%%%%%%%%%%%??????******+++++;;;;;;;;;;;;;;;;;;;++++++++++++;;;;;;;;;;;;;;;;;;;;;;;+++++++;;;+*??????????
;;;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;++*?%SSSSSS##SSSS%%%%%%%%%%%%%SSSSSSSSSS%%%%%%%%%%%%%%%%%%%%%%%%%????????????????????%%%%SSSSSSSSSSSSSS##SSSSS#SSSSSSSSS%%%%%%%%%SSSSS%%%%%%%%%%%SSSSSSSSSSSSSSSSSS%%%%%%%%%%%????????*****+++;;;;;;;;;;;;;;;;+++++++++++++;;;;;;;;;;;;;;;;;;;;;;;++++++++;;+*???%????%%
;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;++?%%SSSSSS###SSSS%%%%%%%%%%%%SSSSSSSSSS%%%%%%%%%%%%%%%%%%%%%%%?????????????????%%%%%SSSSSSSSS#######################SSSSSSSSS%%%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSS%%%%%%%%%%?????????***++++;;;;;;;;;;;;+++++++++++++;;;;;;;;;;;;;;;;;;;;;;+++++++++;;+*???????%%%
;;;;;:::::::;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSSS####SSS%%%%%%%%%%%SSSSSSSSS%%%%%%%%%%%SSSSSSSSS%%%%%????????????%%%%%%SSS#######################################SSSSSSSS%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSS#SSSSSSSSS%%%%%%%%%%%???????***+++;;;;;;;;;++++++++++++++;;;;;;;;;;;;;;;;;;;;;;++++++++++++*???%??%%%%
;;;;;::::::;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSSS###SSSS%%%%%%%%%%%SSSSSSS%%%???%%%%%SSSSSSSSSSS%%%%??????????%%%%SSSSS#################################################SSSSS%%%%%%%%%%%%SSSSSSSSSSS######SSSSSSSSSSS%%%%%%%%%%%%?????***+++++;;;++++++++++++++++;;;;;;;;;;;;;;;;;;;;;;+++++++++++*??%%%???%%%
;;;;;;:::::;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSSS####SSS%%%%%%%%%%%SSSSS%%???????%%%SSSSSSSSSS%%%%%%%%%%??%%%SSSSS##############################@@########################SSSSSSS%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%%%??***++++++++++++++++++++++;;;;;;;;;;;;;;;;;;;;;++++++++++++*??%%%?%%%%%
;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSS#####SSS%%%%%%%%%%%SSSS%??????????%%SSSSSSSS%%%%%%%%SSSSSSSSSS#################################@@@@#####################SSSSSSSSSS%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%???****+++++++++++++++++++;;;;;;;;;;;;++;;;;;;;++++++++++++*?%%%%%?%%%%
;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSS#####SSSS%%%%%%%%%%SSS%%???%%%%????%%SSSSSSSS%SSSSSSSSSSS######################################@@@@@#################SSSSSSSSSSSSS%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%????****************++++++;;;;;;;;;;;++;;;;;;;++++++++++++*%%%%%%?%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSS######SSSS%%%%%%%SSS%%%%???%%%%%%%%%%%SSSSSSSSSSSSS#############################################################SSSSSSSSSSSSSSSSS%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%????????????*******+++++++;;;;;;;;;++;;;;;;+++++++++++++*?%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSSSS###SSSSSS%%%%%%%%%%%%%%???%%%%%%%%%%SSSSSS##################################################################SSSSSSSSSSSSSS%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%????????????****+++++++++;;;;;;++;;;;;;+++++++++++++*??%%%%?%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSSSS###SSSSS%%%%%%%%%%%%%%%%??%%%%%%%%%SSSSSS######################################################################SSSSSSSS%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%%%%%%???????***++++++++++;;;;+;;;;;;;+++++++++++++??%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++*?%%SSSSSSSSSSSSSS%%%%%%%%%%%%%%%%%?%%????%%%%SSSS#######################################S####@@############################SSSS%%%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%%%%%%%%%????**+++++++++;;;++;;;;;;+++++++++++++*??%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++?%%%SSSSSSSSSSSSS%%%%%%%%%%%%%%%%%%?????????%%SSSS#######################################SSS########@@@###################SSSSSS%%%%%%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%%???**++++++++++++++;;;;;;++++++++++++*?%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSSSSSSSSSS%%%%%%????%%%%%%%%%??????????%%SSS#######################################SSS#############################SSSSSS%%%%%%%%%%SSSSS%%%%%%%%%%SSSSSSSSSSSS#SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%???**+++++++;++++;;;;;;++++++++++++*?%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%SSSSSSSSSSSSS%%%%?????%%%%%%??????????????%%SSSS######################################SSS#########################SSSSSSSSSSSS%%SSSSSSS#####SSSSSSS%%SSSSSSSSSSS#########################SSSSSSSSSSSSSSSSSSSSSSSS%%%%%???**+++++++++++;;;;;++++++++++++*?%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSSSSSSSSSS%%%???????%%????????%%%%?????%%SSSSS#####################################SSS########################SSSSSSSSSSSSSSSSSSSSSS##########SSSSSSSSSSSSSSSSS#######################SSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%??**+++++++++;;;;+++++++++++++*?%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSSSS##SSSS%%??????????????????%%S%%%%%%%%SSSSSSSSSSSSSSS###########################SS############################SSSSSSSSSSSSSSSSSSS#############SSSSSSSSSSSSSSSS######################SSSSSSSSSSSSSSSS%%%SSSSSSSSS%%%%??**++++++++;;;;++++++++++++**?%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSSSS##SSSS%%????????????????%%%SSSSSSSSSSSSSSSSSSSSSSSSS############################SSS#########################################SSS###############SSSSSSSS%SSSSSS#######################SSSSSSSSSSSSSSSSS%%%SSSSSSS%%%%%???*+++++++;;;;++++++++++++**%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++*%%SSSSSSSS##SSSS%%????????????????%%SSSSSSSSSSSSSSSSSSSSSSSS#############################SSSS####@@@@@@@@@@@@@@@@@@@@@@@@##############################SSSSSSSSSSSSSS##########################SSSSSSSSSSSSSSSSS%%%%SSSSSS%%%%%??**+++++++;;;++++++++++++*?%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+?%%SSSSSS###SSSS%%????????????????%%%%SSSSSSSSSSS%%%%%SSSSSSSS############################SSSSS###@@@@@@@@@@@@@@@@@@@@@@@@@@##########################SSSSSSSSSSSSSS#############################SSSSSSSSSSSSSSSSSSSS%%%%%%%%%%%%??**++++++;;+++++++++++++*?%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++?%SSSSSSS###SSSS%%?????????????%%%%%%SSSSSSSSSS%%%%%%SSSSSSS#S############################SSSSS###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######SS#######SSS#SSSSSSSSSSSSSSSSS##########@@##################SSSSSSSSSSSSSSSSSSSS%%%%%%%%%%%???**++++++;+++++++++++++*?%%%%%%%%%%%?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%SSSSSSSSSSSSSS%%????????????%%%%%SSSSSSSSSSS%%%%%%%SSS#SSSSS############################SSSSS###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######S######SSSSSSSSSSSSSSSSSSSSSSSSS##########################SSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%???**++++;;;++++++++++++*?%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%%SSSSSSSSSSSSS%%%????????????%%%SSSSSSSSSSSSS%%%%%SSS###SSSSS##############################SSSS####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####SSS######SSSSSS###########SSSSSSSSSSSS#####################SSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%??*++++;;;+++++++++++**?%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%%SSSSSSSSSSSSS%%%???????????%%%SSSSSSSSSSSSSS%%%SSSSS#SSSSSS###############################SSSSS####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####SS########SSS#############SSSSSSSSSSSS#####################SSSSSSSSSSSSS####SSSSSSSSS%%%%??*+++;;;+++++++++++**?%%%%%%%%%%%?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%%SSSSSSSSSSSSS%%%%?????%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSS##################################SS######@@@@@@@@@@@####@@@@@@@@@@@@@@@@@@@@###S##########SSS#############SSSSSSSSSSSSS#####################SSSSSSSSS########SSSSSSS%%%%?**+++;;+++++++++*+**?%%%%%%%%%%%?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%%%SSSSSSSSSSSS%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS#########################################@@@@@@@@@#######@@@@@@@@@@@@@@@@@@@@###############################SSSSSSSSSSS#########################SSS###########SSSSSS%%%??*+++;;+++++++*+****?%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%%%%SSSSSSSSSSSS%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS########################################@@@@@@###SSSSS#@@@@@@@@@@@@@@@@@@@@################################SSSSSSSSSSS#########################S##############SSSS%%??**++;;+++++++***+*?%%%%%%%%%%%%%
;++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+?%%%SSSSSSSSSSSSSSSSSS%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS#################################################S%%%SS#@@@@@@@@@@@@@@@@@@@################################SSSS%%%%SSSS######################################SSSSS%%?**+++++++++++***+*??%%%%%%%%%%%%
;;;;;;;;;;;;;;;+;;;;;;;;;;;;;;;;;++?%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSS###########SSSSSSSSSSSS######################SS%%%%S##@@@@@@@@@@@@@@@@@@@@#############################SSSSS%%%%%SSSS##############################@######SSSS%%??**++++++++++*****??%%%%%%%%%%%%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++?%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS###SSSS%%%%%%SSSSSS####################SS%%%%%S##@@@@@@@@@@@@@@@@@@@#############################SSSSS%%%SSSSSS#############################@@@#####SSS%%%?**+++++++++******?%%%%%%%%%%%%%
;++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++?SSSSSSSSSSSSSSSSSSSSSS########SSSSS%%%?%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%????%%%SSSSSSS###############SSSSS%%%%%%S##@@@@@@@@@@@@@@@@@@@##########################SSSSSSSSSSSSSSSSS##@@@@@@####################@######SSSS%%%?*+++++++++******?%%%%%%%%%%%%%
;+++;;;;;;;;;;;;+;+;;;;;;;;;;;;;;+*%SSSSSSSSSSSSSSSSSSSSS#########SSSSS%%???%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%????????%%%SSSSSS##############SSSSSS%%%?%%%S##@@@@@@@@@@@@@@@@@@@######################SSSSSSSSSSSSSSSSSSSS##@@@@@@##########################SSSSSS%%?*++++++++******?%%%%%%%%%%%%%
;+++;;;;;;;;;;;;++++;;;;;;;;;;;;;+*%SSSSSSSSSSSSSSSSSSSS#########SSSSSSS%??%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%??????????%%%%%%SS############SSSSSSS%%%%%%%%SS####@@@@@@@@@@@@@@@@#####################SSSSSSSSSSSSSS##########@@@############################SSSSS%%?**++++++*******?%%%%%%%%%%%%%
;+++;;;;;;;;;;;;+++++++;;;;;;;;;;+*%SSSSS%%SSSSSSSSSSSSS#########SSSSSSS%%?%%SSSSSSSSS%%%%%%%%%%%%SSSSSS%%%%SSSSSSSSSS%%???****????%%%%%%%S##########SSSSSSSS%%%%%%%%%SS######@@@@@@@@@@@@@@####################SSSSSSSSSSSSS###############################SS########SSSSSS%%%?*++++++*******?%%%%%%%%%%%%%
;+++;;;;;;;;;;;;+++++++;;;;;;;;;;+*%%%%%%%%%%SSSSSSSSSSS#####SSSSSSSS%%%%%?%%SSSSSSSSSSS%%%%%%%%%%%%%%%S%%%%SSSSSSSSSS%%%??*******??%%%???%S#########SSSSSSSSS%%%%%%%%SSS#########@@@@@@@@@@@@@#################SSSSSSSSSSSSS#####@@########################SS#######SSSSSSS%%?**++++++*******?%%%%%%%%%%%%%
++++;;;;;;;;;;;+++++++++;;;;;;;;++*??????%%%%SSSSSSSSSSS######SSSSSS%%%%%%??%SSSSSSSSSSS%%%%%%%%%%%S%SSSS%%%%SSSSSSSSS%%%??********??%%????%SS#######SSSSSSSS%%%%%??%%%SSSS########@@@@@@@@@@@####################SSSSSSSSSSS#####@@@#############@@@#####SSSS#######SSSSSSS%%?**++++++******?%%%%%%%%%%%%%%
++++;;;;;;;;;;;+++++++++;;;;;;;+++*????%%%%SSSSSS##SSSSSSSSSSSSSSSS%%%?????%%%SSSSSSSSSSS%%%%%%%%%%%%%SSS%%%%SSSSSS%%%%%%??**********???????%SSSS####SS%%%%%%%%??????%%%SSSSS########@@@@@@@######################SSSSSSSSS##########@@####@##@@@@@@@####SSSSS########SSSSSS%%?**++++++******?%%%%%%%%%%%%%%
++++;;;;;;;;;;++++++++++;;;;;;;+++*???%%%%SSSSSS###SSSSSSSSSSSSSSS%%??????%%%SSSSS##SSSSSSS%%%%%%%%%%%%SSS%%%SSSSS%%%%%%???***********???**??%SSSSS#SSS%%????????????%%%%%SSSS##########@@@#########################SSSSSSS##########@@@@#####@@@@@@####SSSSSS########SSSSSS%%??**++++*******?%%%%%%%%%%%%%%
++++;;;;;;;;;;++++++++++;;;;;;;+++???%%%%%SSSSS####SSS%%SSSSSSSSSS%%??????%%%SSSSS####SSSSS%%%%%%%%%%%%SSSS%%%SSS%%%???????******+++**???****%%%%%SSSSS%?????????????%%%%%%SSSSS#####################################SSSSSSSS#########@@@#####@@@@@@####SSSSS#########SSSSSS%???**+++********?%%%%%%%%%%%%%%
+++++;;;;;;;;;++++++++++;;;;;;;+++?%%%%%%%SSSS######SS%%%SSSSSSSSS%??????%%%SSSSS#######SSS%%%%%%%%%%%%SSSSS%S%%%%%????????*****++++++**?****?%%%?%%%%%%??????????????%%%%%%SSSSSSSSSSS################################SSSS####################@@@@@#####SSSS#########SSSSS%????***+*********?%%%%%%%%%%%%%%
+++++;;;;;;;;;+++++++++++;;;;;;+++?%%%%%%%SSSS######SSS%%%%SSSSSSS%??????%%%SSSS########SSS%%%%%%%%%%%SSSSSSSS%%%%%????????*****+++++++******??%%???%%%%???????????????%%%%%%%%SSSSSSSSS###############################SSSS#####################@@@@#################SSSSSS%?******++********?%%%%%%%%%%%%%%
+++++;;;;;;;;++++++++++++;;;;;;++*?%%%SSSSSSS########SSSSSSSSSSSSS%%???%%%%%SSS#########SSS%%%%%%%%%%%SSSSSSSS%%%%?????????****+++++++++******?%%????%%????????????????%%%%%%%%%%%%%%%%SSS#####################################################@@@@################SSSSSSSS%?*******+********?%%%%%%%%%%%%%%
+++++;;;;;;;;++++++++++++;;;;;;;+*%S%SSSSSSSS#########SSSSSSSSSSSS%%%%%%%%%%SSS##########SS%%%??%%%%%%%SSSSSSS%%%%?????????****++++++++++*****???????%%?????????????????????%%%%%%%%%%%%SSS##############SSS######################################################SSSSSSSSS%?***+***********?%%%%%%%%%%%%%%%
+++++;;;;;;;+++++++++++++;;;;;;++*%SSSSSSSSS##########SSSSSSSSSSSSSSSSSSSSSSSSS#########SSS%%????????%%%SSSSS%%%%??????????****++++++++++******??%%??%%%%%???????????????????%%%%%%%SS%%%%SS############SSSSSS###################S#############@##################SSSSSSSSS%?**+++**********?%%%%%%%%%%%%%%%
++++++;;;;;;++++++++++++++;;;;;++?%SSSSSSSS###########SSSSSSSSSSSSSSSSSSSSSSSS##########SS%%%?????????%%SSSS%%%%%??????%%??***++++++++++++******????%%%%%%%%??????????????????%%%%SSSSS%%%SSSSS#########SSSSSS####SSS############SSS###########@@@#################SSSSSSS%%?**++***********?%%%%%%%%%%%%%%%
++++++;;;;;;++++++++++++++;;;;+++?%SSSSSSSS###########SSSSS#####SSS######SSSSSS########SS%%%???????????%%%%%%%%%??????%%%%??**++++++++++++*******????%%SSSS%%?????????????***??%SSS###SSSSSSSSSSS######SSS%SSSS##SSSS#############SSS##########@@@#################SSSSSSSS%?**++***********?%%%%%%%%%%%%%%%
++++++;;;;;;++++++++++++++;;;;;++?SSSSSSSS#############SS##################SSSS########SS%%%?%??????????%%%%%??????%%%%%%%??**+++++++++++++*******????%%SSSS%%???????????****??%S#######SSSSSSSSS##SSSSS%%%%SSSSSSSSS##############SSS############################SSSSSSSSS%?*+++++*********?%S%%%%%%%%%%%%%
++++++;;;;;;+++++++++++++++;;;;++?SSSSSSSS##################################SSS#######SSS%%%%%%%?????????%%%%%?????%%%%%%%%?**++++++;;;;++++********???%%SS#SS%%????????*****??S##@@@@##SSSSSSS####SS%%%?%%%SSSSSSSS##@#############SS##@@#@#####################SSSSSSS%%%?*++++++*********?%S%%%%%%%%%%%%%
+++++++;;;;+++++++++++++++++;;+++?SSSSSSS####################################SS######SSSSS%%%%%%??%????????%%%%%%%%%%%%%%%%??*++++;;;;;;;;+++*********??%S###SS%%????****++**??S#@@@@@@##SSSS#####S%%?????%%%SSSSSSS###########@@###SS###@@@@@@#################SSSSSSS%???**+++++++********?%S%SS%%%%%%%%%%
+++++++;;;;+++++++++++++++++;+++*%SSSSSS#############################################SSSSS%%%%%%%?????****??%%%%%%%%%%%%%%%%?**+++;;;;;;;;;+++*********??S#####%%???***+++++**?S#@@@@@###########S%????????%%SSSSSSSS##########@@@##SS##@@@@@@@#################SSSSSS?******+++++++********?%S%SS%%%%%%%%%%
++++++;;;;;+++++++++++++++++++++*%##################################################SSSS%%%%%%%%???*********???%%%%%%SSS%%%??**++;;;;;;;;;;;+++*********?%S#@@#S%??**+++++++**?%S#@@@##########SS%?????*???%%%SSSSSSS##########@@@######@@@@@@@#################SSSSS%*+++***+++++++*******?%%%%%%%%%%%%%%%%
+++++++;;;;+++++++++++++++++++++*S###########################################SS#####SS%%%%%%%%???*************??%%%SSSSS%%??**++;;;;;;;;;;;;++++*********?%S#@##S%?*++++++++**??%S###@@#######SS%???****???%%%SSSSSSS###########@#######@@@@@@@################SSSS%?*+++++*++++++++*******?%%%%%%%%%%%%%%%%
+++++++;;;;+++++++++++++++++++++?SSSS#######################################SSSS###SSS%%%%%%???*********+**+****??%%%%SS%%??**++;;;;;;;;;;;;;;;+++********?%##@##%?*+++++++++**?%S###@@@######%%???*****???%%%SSSSSSS###########@@######@@@@@@@@###############SSSS%?*++++++++++++++*******?%%%%%%%%%%%%%%%%
+++++++;;;;+++++++++++++++++++++?SSSS#######################################SS%SSSSSS%%%%%%%?????*********+*******??%%%%%%%?**++;;;;;;;;;;;;;;;;;++***++++*?S####S?*++++++++++*??S####@#####S%???*******???%%SSSSSSSS##########@@@@@@###@@@@@@@@###############SSS%?**++++++++++++++*******?%%%%%%%%%SS%%%%%
++++++++;;;+++++++++++++++++++++?SSSS#####################################S%?*?%SSSS%%%%%%%%%%%%%%%????***************????***++;;;;;;;;;;;;;;;;;;;++++++++**%S####%*+++++++++***?%S########S%??*********??%%%SSSSSSSS##########@@@@@@@@@@@@@@@@#############SSSSSS%?**++++++++++++++*******?%S%%%%%SSSS%%%%%
++++++++;;++++++++++++++++++++++?SSSS#####################################S?*+*?%SSS%%%%%%%%SSSSSSSSSS%%%%?????**********++++;;;;;;;;;;;;;;;;;;;;;;++++++++*?S####S?*+++++++++**?%S######SS%???*********??%%SS###SSS##########@@##@@@@@@@@@@@@###########SSSSSSSS%??**++++++++++++++*******?%SSS%SSSSSS%%%%%
++++++++++++++++++++++++++++++++?SSSS###########@#########################%****?%%%%%%%%%%%SSS%%%SSSSSSSSSSSS%%%%%????****+++;;;;;;;;;;;;;;;;;;;;;;+++++++++*%SS##S?*+++++++++**?%S######S%%???????****???%SS###SSSS#########@@##S#@@@@@@@@#############SSSSSSS%%??***+++++++++++++*******??%SSSSSSSSSS%%%%S
+++++++++++++++++++++++++++++++*%SSS############@@#@######################%??%%S%%%%%%%%%%%%%%%%%%%%%%%%SSSSSSSSSSSSS%%%??**++++;;;;;;;;;;;;;;;;;;;;++++++++*?%%SS%?*++++++***??%SS######SS%%%%%%%%%%??%%%SS###########@@@###@###S#@@@@@################SSSSSS%%?***+++++++++++++++*******??%SSSSSSSSSS%%%%%
+++++++++++++++++++++++++++++++*%##S##########@@@@@@####################SS%%SS##SS%%??%%%%%%%%%??????**????%%SSSSS#SSSSS%%??****++++;;;;;;;;;;;;;;;;+++++++**???%??*****????%%SSS########SSSSSSSSSSSSSSSSS##########@@@@@@#@@#S####@@###############S###SSSS%%??***++++++++++++++++*******??%SSSSSSSSSS%%%%%
+++++++++++++++++++++++++++++++*%#############@@@@@@##########SSSSSSSSSSSSSSSSSSS%%%%%%%%%%%%%%%%%%??????****????%%%%%%%%%%????***+++;;;;;;;;;;;;;++++++++***??%%%%%%%%%%SS#######SSSSS%%%%%%%%%%%%%%%%SS###@#@###@@@@@@@@@@@#SS##################SSS##SSSS%%??***++++++++++++++++********?%SSSSSSSSSSS%%%%%
+++++++++++++++++++++++++++++++*%##############@@@@@@#####SSSSSSS######@##@###########SSSSSSSSS%%SSSSSSSS%%%%????????????????????***+++++;;;;;;;+++++++****???%%%%SSSSSSSSS#SSSS%%????*******??????????%S###@@@@@@@@@@@@@@@@@#SS#################SSS##SSSS%%??***++++++++++++++++++*******?%SSSSSSSSSSS%%%%S
+++++++++++++++++++++++++++++++?S#############@@@@@@@###########@###################@@##@@@@@########SS#SS%SS%SSSSS%%%%?????????????**+++++++;;++++******?????%%%%%SSS%%%%%%%%%????????????????????%%%%SS###@@@@@@@@@@@##############################SSS%%%??****++++++++++++++++++*******?%SSSSSSSSSSS%%%SS
+++++++++++++++++++++++++++++++?S#############@@@@@@#####################@@@@@@@@#####################@@@#######SSSSSSSSSS%%??????????**++++++++++*****?????%%%%%%S%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSS####SSSSSS##############SS################S####SSS%%%???*****++++++++++++++++++*******?%SSSSSSSSSSS%%%SS
+++++++++++++++++++++++++++++++?S#############@@@@@@@################@@@@@@@@@@@@@@#########@@@@@@@##############@#####SSSS#SS%????????**++++++++***???%%%%SSS%SSSSS%SS#######################################SSSSSSSSS####SSS##############SSSSSSSS%%?????******++++++++++++++++++*******?%SSSSSSSSSS%%%%SS
++++++++++++++++++++++++++++++*?S#############@@@@@@@##############@@@@@@@@@@@@@@@###########@@@@@@@@@##@@@@@##############SSS#S%??????**+++;++++*?SS%SSS###########@@########@@############@#######################SSSSSSSSSSSS#########SSSSSSSSS%%???????******++++++++++++++++++*******?%SSSSSSSSSS%%%%%S
++++++++++++++++++++++++++++++*%S#############@@@@@@@#############@@@@@@@@@@@@@@@@@##########@@@@@@@#####@@@@@@@@@############SSSS%%%%??**++****?SS############################################@@@@#####@@#####@#############SSSSSS##SSSSSSSSSS%%%??*************++++++++++++++++++******??%S%%SSSSSSS%%%%%S
++++++++++++++++++++++++++++++*%S#############@@@@@@@############@@@@@@@@@@@@@@@@@@#############@@#############################SSSSSSS%%%%%%%SSSS########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################SSSSSSSSS%%????**************++++++++++++++++++******??%SSSSSSSSSS%%%%SS
++++++++++++++++++++++++++++++*%#############@@@@@@@@#S##########@@@@@@@@@@@@@@@@@@###################################################SSSSSS#####################@########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###################SSSSSS%%%??*****************++++++++++++++++++*******?%SSSSSSSSS%%%%%%SS
++++++++++++++++++++++++++++++?S#############@@@@@@@@@###########@@@@@@@@@@@@@@@@@@##@@@#@#############################################################################################@@@@@@@@#@@@@@@@@@@@@@@@@@@@@################SS%%%???********++++*********+++++++++++++++++*******?%SSSSSSSSS%%%%%%SS
++++++++++++++++++++++++++++++?S#############@@@@@@@@@############@@@@@S+%@@@@@@@@@@#%?#@################################################################################################@#############@@@@@@@@@@@@@@###############S%???****+++***+++++*********+++++++++++++++++******??%SSSSSSSSS%%%%%%SS
+++++++++++++++++++++++++++++*?S############@@@@@@@@@@############@@@@@S:*@@@@@@@@@@@*:#@#@@@@##############@############################################################################################@@@@@@@@@@@@@#############S%?******++++++*+++*+*********+++++++++++++++++******??SSSSSSSSSSS%%%%%SS
++++++++++++++++++**+++++++++*?S###########@@@@@@@@@@@#S##########@@@@@#:*@@@@@@@%**?+:##@S%%S#####@###@@##S%############################S#############################################################@@#@@@@@@@@@@@@#############S%??****++++++****************+++++++++++++++++******??SSSSSSSSSSS%%%%SSS
++++++++++++++++++***++++++++*%S###########@@@@@@@@@@@@###########@@@@@%:?@@@@@#+:*SS*:##?;*?*+%##???**?S#S;;?%###################%******+*?%SS######@########################################@########@@#@@@@@@@@@@@@#############S%?***+++++++*****************+++++++++++++++++*****???SSSSSSSSSSS%%%%SSS
++++++++++++++++++*****++++++*%############@@@@@@@@@@@@############@@@@*:#@@@@@S,?@@@?,##:+@@#?;%#+;S#S;+##+:?%##################%++++++++;+++*S####@@#################@#@@###################@#@#@####@@#@@@@@@@@@@@@#############S?**+++++++++*****************+++++++++++++++++****???%SSSSSSSSSSS%%%%SSS
+++++++++++++++******+++++++*?S#############@@@@@@@@@@@@#############@@?+@@@@@@#+;%SS+,S#;+#@#?:?@*;#@#+;##*;#@#################%*+++++++++++++?#####@@###############S%??%##SSSSS###@#@###@@##@@####@@@@@@@@@@@@@@@@@#############S?+****++++*******************+++++++++++++++++****???%SSSSSSSSSSSS%%SSSS
+++++++++++++++*******++++++*?S############@@@@@@@@@@@@@##############@@@@@@@@@@#%**%?*#@%*+*++?##*;#@#+;##?:%#################S*+++++++++++++++?#####@@#############?;+??%##?*%?;?##?+?*%#S?**?%#@#@@@@@@@@@@@@@@@@@@#############S****+++++********************++++++++++++++++*****???%SSSSSSSSSSSS%%SSSS
++++++++++++++*********+++++*?S###########@@@@@@@@@@@@@@@@###########SS#@@@@@@@@@@@@@@@@@@@#SS#@@##S###%?##S*+*S##############S*+++++++++++++++++%#####@@###########%:;#@@@#S%%%?:*##+;%S#%:+%S?:*#@@@@@@@@@@@@@@@@@@@#############%**++++++***??****************++++++*+++++++++*****???%SSSSSSSSSSSS%SSSSS
++++++++++++++*********+++++*?S###########@@@@@@@@@@@@@@@@@@@##########SS##@@@@@@@@@@@#@@#@@@@@####@###@@####################S*+++++++++++++++++++S#####@@##########S;;S###S;;?S%:*@#;+#@#+:*****?#@#@@@@@@@@@@@@@@@@#############S?+*+++++***???****************+++++**++++++++******???%SSSSSSSSSSSS%%SSSS
++++++++++++++*********+++++*%S##########@@@@@@@@@@@@@@@@@@@@@@@#########SSSSS##@@@@@@@@@#@@@######################@########S*+++++++++;++++++++++*%#####@@##########S*+++?S++*?*;?@#+*###%;*%#S%#@@##@@@@@@@@@@@@@@@#############S*+++++****????*****************+++*****++++*******????%SSSSSSSSSSSSSSSSSS
++++++++++++++**********++++*%##########@@@@@@@@@@@@@@@@@@@@@@@@@@@##########SS%S%SSS####@@@@@@@@@@@###########@@@@########%*+++++++++++++++++++++++%#####@@@################S%S#####S#####S%??%?#@@##@@@@@@@@@@@@@@#############S?++++****??????**************************++*******?????%SSSSSSSSSSSSSSSSSS
+++++++++++++**********+++++*%##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########SSSS%SSSSS##S####@@##@@@##############S?++++++++++++++++++++++++++?######@@@@@##########################@@@@@@@@##@@@@@@@@@@@@@##############S%*+******????????**********************************?????%SSSSSSSSSSSSSSSSSS
+****+++++++***********+++++*%##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####SSSSSS########SSSSSSSSSS####SS#########S?+++++++++++++++++++++++++++++*%#######@@@@@@#############################@@@@@@@@@@@@@################S?********????????**********??**********************?????%%SSSSSSSSSSSSSSSSSS
****++++++++*************+++*%##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####%??**?????%%%SSSSSS#########SS#SSS%%?*++++++++++++++;;;;;;++++++++++++*?S#####S#####@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@#SSSSS############S%?**********?????????********???***********************????%SSSSSSSSSSSSSSSSSSS
*******++++**************+++?S#############@@@@@@@@@@@##########################SS%?*****+++++++++++***?????******+++++++++++++++++++;;;;;++++++++++++++++*%S######SSSSS############@@@@@@##########S%SSSSSS############SS%?****+*******??????????********????*********************?????%SSSSSSSSSSSSSSSSSSS
********++******************?SSSSSSSSSSSSSSSSSSS#SSSSSSSSSSSSSSSSSS##SSSSSSSSSSSSS%??*******+++++++++++++++++++++++++++++++++++++++++++;;;+++++++++++++++++++*?%SS############SSSSSS######SSSSSSSS###S###########SSSS%%?****************??????????*******?????*********************????%%SSSSSSSSSSSSSSSSS##
*?????????????????%%%%%%%%%%%%S%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSS#############SSS%????********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**??%%%%SS#SS##S###########SSSSSSSSSSSS%%%%%%????????*****************??????????*******??????********************????%%SSSSSSSSSSSSSSS####
%%%%%%%%%%%%%%%%%%%%%%%%SS%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS##################SSSSS%%???*********++++++++++++++++++++++++*+**++++++++++++++++++++++++++++++++++++++++;+++++++**++++**************************???????????****************???????????******???????*******************?????%%SSSSSSSSSSSSSSS####
%%%%%%%%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSS####################SSSSSSSSSS%?????*********+++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*******??????????????****************???????????******???????*******************?????%SSSSS#####SSSSS#####
%%%%%%%%%%%%%%%%%S%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSS############SSSSSSSSSSSSSSSSSSSS%%????*****************++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********???????????????????************?????????????****????????*******************????%%SSS#########SSS#####
%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS#SSSS%%??????*************************+++*******++++++++++++++++++++++++++++++++++++++++++++++++++**++**+**************????????????????????????*********?????????????***?????????******************?????%%SS###########SS#####
%%%%%%%SSS%%%%%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%??????*************************+++++++*+++++++++++++++++++++++++++++++++++++++++++++*************************???????????????%%%??????????******??????????????**??????????******************????%%%SS##################
%SSSSSSS%SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S%%%%??????***************************+++++***+++++++++++++++++++++++++++++++++++++++****************************???????????????%%S%???????????*****???????%???????*??????????******************????%%%S###########SS######
SSSS%%%%%%%%%%%%%%%%%%?%%%%%%????????????????????%???%%%%%%%%%%%%%%%%%%%%%%%%%%%%S%%%%%??????***************************++++***++++++++++++++++++++++++++++++++++********************************????????????????%SS%????????????****???????%%??????*??????????******************????%%SS##########SS#######
???????????????%%%%????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SSS%%%%%%%%%%????????****************?????*************+++++++++++++++++++++++++++++************************************?????????????%%SSS%%?????????????????????%%%?????????????????*****************????%%%SS###################
SSSSSSSSSS########S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%????????************????????????????????**********************************??******************************????????????%%SS#SS%???????????????????%%%%%??????????????????****************????%%%S####################
##################S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????????**********????%????%%%%%%????????????????????????????????????%%%%?????*************************?????????????%S####S%???%%%?????????????%%%%%??????????????????****?????******?????%%%S####################
####@@#########@@@S%?%%%%%%%%%%%%%%%%%%%%%%%%%%%?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%????????????????????????*******????????%%%%%???????????????????????????????%%%%%%%%????****************************????????????%S#####S%???%%%????????????%%%%%%??????????????????****?????*****??????%%%S####################
##@@@@#####@##@@@#S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%???????????????????%%?%%%?????????????????????????********????????%%%%?????????????????????????????????%%%?????****************************????????????%%S#@@###S%%?%%%%????????????%%%%%%????????????????????????????****??????%%SS####################
####@@@@@@@@@##@@#S%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SSS%????????????????????????*************???%%?????????*********????????%%%???????????????????????????????????????****************************???????????%%S##@@@###S%%%%%%%%???????????%%%%%%%?????????????????????????????*???????%%SS####################
#########@@####@@#S%%%%%%%%%%%%%%%%%%%%%%%%SSSSSSSSS%%%%%%?????????????*******************??%%%%%???????*********????????%%?????????????????????????????????????*************************????????????????%%S##@@@###SS%%%%%%%???????????%%%%%%%?????????????????????????????????????%%SS####################
########@@@####@@@#%%%%%%%%%%%%%%%%%%%%%%SSSSSSSSSSS%%%%%%%?????******++++++++************???%%%%%%%?????**********???????????????????????????????????????????*************************??????????????????????%S######S%%%%%%%%?????????%%%%%%%%????????????????????????????????????%%%SS####################
###############@@##%%%%%%%%%%%%%%%%%%%%%%SSSSS%%%SSS%%?????*****++++++++++***************?????%%%%%%%????*************?????????????????????????????????????**************************??????????????%%%?????****?%SS##S%%%%%%%%?????????%%%%%%%%??????????%%???????????????????????%%%%SS####################
##################SS%%%%%%%%%%%%%%%%%%%%SSSSS%%%%%%??****++++++++++++******************???????%%%%%%%%?????****?*******??????????????????????????????????**************************?????????????%%%%%%%??????*****??%%%%%%%%%%???????%%%%%%%%%%??????????%%???????????????????????%%%SS#####################
##################SS%%%%%%%%%%%%%%%%%%%SSSS%%???***++++++++++**++********************??????????%%%%%%%%?????**************???????????????????????????***************************??????????????%%%%%%%%%?????????******???%%%%%??????%%%%%%%%%%%?????????%%%%??????????????????????%%%SS#####################
###############@@##S%%%%%%%%%%%%%%%%%%%???*****+++++++++++++************************?????????????%%%%%%%????***************?*????????????????????*****************************?????????????%%%%%%%%%%%%??????????********?????%?????%%%%%%%%%%%%????????%%%%??????????????????????%%%SS#####################
##################SSSS%%%%%%%%%%%???****++++++++++++++++****************************?????????????%%%%%%%????****************************************************************????????????%%%%%%%%%%%%%%%%%??????????**********???????%%%%%%%%%%%%????????%%%%%?????????????????????%%%SS#####################
#################SSSSSSSSS%%%??****++++++++++++++++++*******************************??????????????%%%%%%%????****************************++*******************************???????????%%%%%%%%%%%%%%%%%%%%???????????*************????%%%%%%%%%%%???????%%%%%%?????????????????????%%%SS#####################
SSSSSSSSSSSSSSS###SSSS%%%?****++++++++++++++++++*************************++++++++****??????????????%%%%%%%????********************++++++++********************************????????%%%%%%%%%%%%%%%%%%%%%%%????????????***************????%%%%%%%%%??????%%%%%%????????????????????%%%%SS#####################
SSSSSSS##########S%%?****+++++++++*++++++++*****************************+++++++++++**??????????????%%%%%%%%????******************++++++++++++++************************?????????%%%%%%%%%%%%%%%%%%%%%%%%????????????*??****************????%%%%%???????%%%%%%%???????????????????%%%%S######################
#######@@@##SS%??**+++++++++++++**************************************++++;;;;++++++**?????????????%%%%%%%%%%????**************+++++++++++++++++**********************?????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%????????????????*******************???????????%%%%%%%%??????????????????%%%%%S######################
@@@@@###S%??***++++++++++++******************************************+++;;;;;;;+++++***????????????%%%%%%%%%%%%???************+++**+++++++++++++++*****************???????%%%%%%%%%%%%%%%???%%%%%%%%%%%%%???????????????************************??????%%%%%%%%??????????????????%%%%%S######################
@##S%%?**+++++++++++***********************************************+++++;;;;;;++++++***????????????%%%%%%%%%%%%%???**************+++++++++++++++*****************?????%%%%%%%%%%%%%%%%??????%%%%%%%%%%%%%??????????????*****************************?????%%%%???????????????????%%%%%S######################
%?**+++++++++*****************************************************+++++;;;;;;;+++++***?????????????%%%%%%%%%%SS%%????********************+++**+***************?????%%%%%%%%%%%%%%%%%%????%%%%%%%%%%%%%%%???????????????**********************************???????????????????????%%%%SS######################
*+++++++++++*****************************************************+++++;;;;;;+++++++***?????????????%%%%%%%%%%%SS%%%????************************************??????%%%%%%%%%%%%%%%%%%%%???%%%%%%%%%%%%%%%%%?????????????***************************************???????????????????%%%%SS######################
++++++++*********************************************************+++++;;;;;+++++++***??????????????%%%%%%%%%%%%%%%%%%%%????***********************?????????%%%%%%%%%%%%%%%%%%%%%%%%%%%?%%%%%%%%%%%%%%%%%??????????????*******************************************???????????????%%%%SS######################
*****+******************************++**************************++++++;;;;+++++++***??????????????%%%%%%%%%%%%%%%%%%%%%%%%?????????????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????????????*************************************************?????????%%%%SS######################
;:;********************************;:;+****++++++**+++****+;;++;;;;:;;+++;++++++****??????????????%%%%%%%%%%%%%%%%%%%%%%%%%%?????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????????????******************************************************?????%%%SS#######################
;;+**++****+++*++;;;;++**+;;;;;;++;:::;;**+;;+;;:;*+::+**+::+*+;;;;;::;++++++++****???????????????%%%%%%%%%%%%%%%%%??????????????%%%%%%%%%%%%%%%%%%%?????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????????????*********************************************************???%%S###@@##################
;;++;:;+**+::+*+;;+;;:;+*;:;;+++*?*;:;*??*+;;;;;:;*?+:;++::+*+;:;++;::++++++++******??????????????%%%%%%%%%%%%%%%%%?????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????????????************************************************************???%S#@@@#################
::+?*;:;*+::+?*+;;;;;::+?*+++;;;;**;:;*?*;:;+**;:;*?*+;::;+*+;::;++;:;++++++++++++******?????????%%%%%%%%%%%%%%%%%???????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%????????????????****************************************************************?%%S##################
::+??*;:;::+??+::+*+;::+*+;;++;:;*?+;:;+++;;;;;;;+****+;;++++++;;++++++++++*+++++++++++**???????%%%%%%%%%%%%%%%%%%?????????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????????????????*******************************************************************???%S##@@######@####
::+*??*;::+???*+;;;;+++*?*+++++*????****????*???***+++++++++++++++++**++**++++++++++++++**???????%%%%%%%%%%%%%%%%%%????????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????????????*************************************************************************??%S####@@@@@###
*********???**????????????????????*???????????**++++++++;;;;;;;++++++++**++++++++++++++++**??????%%%%%%%%%%%%%%%%%%??????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????????????***************************************************************************????%%%%%%%%%%%
*?**************************???***????**???***+++++++;;;;;;;;;;;++++++***++++++++++++++++**??????%%%%%%%%%%%%%%%%%%%?????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%????????????????********?******???????????????????????????????????????????????????????????????????????????
*************************???????????????****++++;;;;;;;;;;;;;;;;+++++++++++++++++++++++++**?????%%%%%%%%%%%%%%%%%%%%%????????????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%???????????????????????????????????????????????????????????????????????????%%%%%%%%%%%%%%%%%%%%%%%%S%%%SSSSSSSS
***********************???????????????***++++++;;;;;;;;;;;;;;++++++++++++++++;;++++++++++**??????%%%%%%%%%%%%%%%%%%%%%%%%????????????????%%???%%%%??%??%%%??%?????????????????????????????????????????????????????????????%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSS#####################@##@@@@@@@@@@@@@@@@@@@@@@@@@@@
*********************???????????????***+++++++;;;;;;;;;;;;;++++++++++++++++++++++++++++++**????%%%%%%%%%%%%%%%%%?????????????????????????????????????????????????????????????????????????%%??%%%%%%%%%SSSSSSSSSSSSS###########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
****************?*????????????????***+++++;+++;;;;;;;;+;++++++++++****++++++++************??????????????????????????????????????????????????%%%%%%%%%%%%%%%%%%SSSSSSSSSSSSSSS###############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
****************?????????????????****+++*********************????????????????????????????????????????????????????%%%%%%%%SSSSSSSSSS#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@