+++++++++++++++++++))))))))***)))))))))))))))))))))))))))))))))))))))))))))))))))**))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))+++))++++++++++
++++++++++++++++++))))))))*****))))))))))))))))))))))))))))))))))))))))))))))*)*****!!*****)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))++++
+++++++++++++++++++)))))))*****))))))))))))))))))))))))))))))))))))))))))))*****)*;:::::::::;;*)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))++
+++++++++++++++++++))))))*******)*))))))))))))))))))))))))))))))))))********)+>>+)*!!!!!;!**!:-!*!!*))))))))))))))))))))))))))))))))))))))))))))))))))))))))))++
++++++++++))++))))))))))))************))))))))))))))))))))))))))*!;:::!*+>===??>+)))))++++>>+);;:!;::::;*)))))))))))))))))))))))))))))))))))))))))))))))))))))))
++++++++++)))))))))))))))))******!**!***))))))))))))))))))))))!;;;;;*+?=%%%%%==??>+)))))+>???>*!!*))*!:-:!))))))))))))))))))))))))))))))))))))))))))))))))))))))
++++++++++))))))))))))))))******!!!!!!**)))))))))))))))))))))!;!**)>=&$$$$$$$$$&%%==?>>>>?===>+)+>??==?);:;*))))))))))))))))))))))))))))))))))))))))))))))))))))
+++))+)))))))))))))))))))*****!!!!!!!!!!**))))))))))))))))))!!*)>>=&$#######$&&%%=?>>>>>>>>?????==%&&&%=+;;;!)))))))))))))))))))))))))))))))))))))))))))))))))))
++))))))))))))))))))))))***!!!!;;;;;!!;;!**))))))))))))))))*!*>>?%$#######$$$$&&%=?>+++++>>??==%&&&&&&%=??**;*))))))))))))))))))))))))))))))))))))))))))))))))))
+))))))))))))))))))))))**!!!!!;::;;;;!!;!!***))))))))))))))**+?=&$############$$$&%=?>++))))++>>?==%%%%%=?)+*!))))))))))))))))))))))))))))))))))))))))))))))))))
+))))))))))))))))))))))**!;;;:;:-:::;;;;!!***))))))))))))))*)>?%$##########$$$&&&&&%%=?>>>+>>>>?=%%&&&&&&%?+);!**)))))))))))))))))))))))))))))))))))))))))))))))
+)))))))))))))))))))))**!!!;:-----:;;:;;!*****))))))))))))))+?=$###########@###$&%?>>???>+++++>>?=%%&$$&&&%?+!;!*)))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))****!!!!!;--~~--::::;;!****))))))))))))>=%==%#########@@@@@##$$&%??>>>>>>+++>>>?=%%&&$$&&%=>****))))))))))))))))))))))))))))))))))))))))))))))
)))))))))))))))))***!!;;!;;;-~^^~-:;;;;!!****)))))))))))+=$##&&########@@@@@@@##$&%=?>>++>>>>+>>??=%&&&&$$$&=?>*;!*)))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))***!!;!!;;::-~^^~-:;;;;!*****)))))))))))>&##$$##@#@@###@@@@@@@#$$$&%=?>>>>+>????==%&$$$$$$$$&%?>*;*)))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))****!;;;;;:-~~~^^--:;;;!******))))))))))?$#$$$@@@@@#######@@@@##&=&&%%%==??>>++>>?%&$$$$$$$$&&%?+*;*))*)*)))))))))))))))))))))))))))))))))))))))
))))))))))))))))****!;::;;--~~~^^~-::;;*******))))))))))=$##$##$&%&&&%%=?=%$###$%=?=??%%$$&%=?>>>??=%&$#####$&&%?+;;*******)))))))))))))))))))))))))))))))))))))
)))))))))))))))*****!;:::--~^^~~~~-:;;;!******)))))))))>&##@@#=+)))**!!;;;!)?&#$&=??=?>??&$%%&%%%==%%%&&&$$###$%?+*:!********)))))))))))))))))))))))))))))))))))
))))))))))))))*****!!:~~~-~~~~~~~~--:;!*******)))))***)%##@@#?)*!;;::---~~~-;)?%%%=??=?>>?=$=?=&$$&&&&$&&$$$$$$$%?+;:*******)*)**)**))))))))))))))))))))))))))))
)))))))))))*********!~^^^^-~~~-~--::::!*******)*******>&#@##=+*!;::---~~~^^^~-;+==%=??=?>>?=$=?>=$####$$$#$$$$$&%?+!~!************)**)*)))))))))))))))))))))))))
))))))))))*********!;:^^^^---~---;;;;;!!*************)?$#@@$>+*!;::---~~^^^^^,^-)?=%%?=%=?>==$%=>?%$#########$$&%?+*-:*********************)))))))))))))))))))))
)))))))))*********!!!;:~^^~:----:;;;!!!**************)=$#@@=>+*!;::---~~^^^,,,,,-)=%&%==&%??==$&%??=%&##@@#####$%=+!:~:!**********************))))))))))))))))))
))))))))))********!!;;:-~~^-----:;;!!****************+%&##$?>)*!;::---~~^^^^,,,,,-+%&&%=%&%=?==$$&%=%%&&$#@@###$$&=+!:;;;!***********************)))))))))))))))
)))))))))))**!***!!!;:::--~~---::!!!****************)>%$#$%?>)*!;::---~~^^^,,,...^;?&&&%=&&&==%=$#$&%%&&&$$######$&?*+>+)****************************)))))))))))
))))))))))******!!!;::::--------;;!*****************)?&$$$?>+*!!;::---~~~^^,,.....~)%&&%%%$&&==%%$@#$&&&&&$$$$$###$=)>++))****************************)****)))))
))))))))))****!!;;!;-:::::::---:;;;!****************+?&$%%>+)*!;;:----~~^^^,,...'',:?&&&%%&$$&%%&%$@@#$&&$$&$$$$$#&>+)+>>+))*********************************)))
)))))))))))***!!;;;;-:::-------;;;;!!!**************>?&&>?+)*!;;::----~~~^^,,..'''.^)%&&&%%$$$&%%&&&@@##$$$$$$$$$$%>!;!?==?+)*!*********************************
))))))))*****!!!!;;;-----~~---:;;;;;!!*************)>=&&+++)*!;;:::---~~~^^,,..'''',;=$$&%&$$$$$&&&&&#@@###$$$$$$&%?):;??==?>)!!********************************
))))))))*****!**!!!;:::--~-:::;;;;;;!**************)>=&%+%=>)!!;;::----~~~^^,,,...'.->&$$&&&$#$$$&&&&&$#@######$$$%?):;?$&%=?>)!!*******************************
)))))))*********!!;;:::::-:;:::::::;!**************)>=%==###$=+*!;::----::;*)+++>+)*!>&$$&&%&$##$$$&$$&$$#@######$&=+;;%$#$&=?>)!!******************************
))))))**********!!;;;;::::;;:::::;;!***************)>=%?>&$###$=)!;:::;)?=&&&&&&%?>>>%&$$&%%=&$###$$$&$$&$$#######$&>!!$$$$$&=?>)!******************************
)))))**************!!!;::;;;;;::;;!!***************)>%%>>%&&$$#$%+*;;;)=%&%%=?>)*!;::!%$$&%%?%$$$#@#$$$$$&&$$#######=)>@#$&$$&=?+*!*****************************
))******************!!;;::;;;:-:!!!!***************)>%=>=$###$$$$?);:;)???=====??>)*!!?$$$&=>>&##$$#@###$$$$&&&$##$&&>&##$$&$$&?>+******************************
)*******************!!!;;;;;---;!!!****************)>%=?&@@######&);--;)?=%%&$$&%===>>=&$$&%>!=$#@#$$$#######$$&%%%%???$$$$&&$$%?>)*****************************
)********************!!;;;;;~-;!!!*****************)>==&$@@@@@###$)-^^-!>=%$#@@@$$?+=%&&$$&%?!)?$@@##$$$$$#######$&=>*+%$$&&%&$&=>+*****************************
**********************!;:;;:-;!!!******************)>=?$@@$$#&%##$!^..^:)=&#@&&#&?=#$$$$$$&&=*;!>$@@@######$$##$$&&=>>?=&&$&%%&$%?>*****************************
*********************!!;:;:-;;!!*******************)?=+>%$$&&%%&#%-,'.^~:)=$$%%==**?$&&$&$$&=>;:!>$@@@@@#######$$$&======&&&&%&$&?>*****************************
*********************!;:-:--;;!!*******************)?=)>>%$$&%%%$)~,.,^^^-)?%&%%===?>**=%&$&%?*:;!=##@@@@@##$$$$$$$&%=%=%=%&$&%&&=?)****************************
*********************!;:----:;!!!******************)??)++?&%=?>??:^..,,^^~:*+???>>)!-^-*=&$&%=+;:!>$#@@@#$&&&%=%&$$$&==%=%?=&$&&&%?)****************************
********************!!;:-~-:;!!!*******************)>?)+*>?>))+?*-,'....,~-:;;;;;:~,,.,:>%$&&=>*;!+&$$#$%=%=?==?$$$$$&=%?%?>=$$$&=?)****************************
********************!;;:-~-:;;;!******************!*>?))!>+)*)+>:^....''.^~~----~^,..'',!=&$&%>+!!+&$==?>+)!:-+*##$$$&%=??=+>$$#&%?)****************************
********************!;;:-~:;;!!!******************!*>?)!)+))*)+;~,,,,....^~~~--~~^,.'''.-?&$&=?)+*+%&+*)>?!:~^:;#@#$$$&%?>%++%$$#&>)****************************
*********************!;--~-:!!!!******************!*>?)!>>+)))!-^,,,,,,,^^~~~~~~~^,...,,~+&&&%>!)+>%%!;*=$%):~~;###&##&%?>%+)?$$$&=)**!*************************
*********************!;:--::!!!*******************!*>?+!>?>+++*:^,,,^^^^~~~~~~~~~^^,,,^^~*%&&%?!;+>==;:+)?&?;~~*##$&##&%>>%>)>&&$%%>*!!*************************
*********************!!;:-:;!!!***!****!******!!!!**>>+!>?>>+>>)!;-^,^^~----~~~~~~~~~~~~~;=&&%?*;!>%?*;);:+?!^~?##$&##&=>>%>+>==&=%=*!!!************************
*********************!!;;::!!!!!!!!*!!!!!!!!!!!!!!!*>>+!+????=&=>==)-~~~---~~~~~~~----~~-:=&&%?*;!+=?)*:::;!:~-$##$$#$&?+>%>+?=?=?%=+!!!!!!!!********!**********
********************!!!!*--~~!;;!!!!!!!!!!*!!!!!!!!*>>+!)?==%&$&=?>&>!-~~--~~~~~---------;?&&%?*!!+==>;^^~-~-~?#$$&$#$&>+>&>+??>>?%=>!!!!!!!!!!**!*!!!**********
*********************!!!*::^^;*!;;;;;;!!!!!!!!!!!!!*>>+**>?=%&$&%>:-;~,^^^~~~~~-----::--:;?%&%>*!;+==+-^~--:-+#$&&&##$=>>?&>>??+>===>*!!!!!!!!!!!!!!!!!!********
***************!*****!**+;;*;)>+***!!*;;;!;!!!!!!!!!+>+**+>?=%=)*!,''..,,,^^^~~~---::::::;>%%%?*;;)%=+:-~^^~>#$%=%$#$&>>>=%>>??+???=>)!!!!!!!!!!!!!!!!!!!******!
*************!!!!!**!!!!+>=%?&%==??>++*******!!!!**!+>+**)+>>>>!;:~.'''..,,^^~~~---::::::;>=%%?*;:+%=)-~^~*$#$&%%%$#$?>>?%??>?>>???=>)!!!!!!!!!!!!!!!!!!!!!!!!!!
**********!!!!!!!!!!!!!!!!!*+>=%$$$&&%=??>+)))****)))++)**))>%%?+)!:^'''..,^^^~~----:::--:+===?*;:>%=*~~:=###&&&%%$$%>>>?%?>>>>>?>?=+)!!!!!!!!!!!!!!!!!!!!!!!!!!
**********!!!!!!!!!!!!!!!!!!!!!!!*+>=%&$$&&%=?>?>++)***)))+)%$$&=?>+*;^'.,^^^^~~---------:)?==?);;=&%=>?#@##&&$&%%$&????==?>>>>?=+??+*!!!!!!!!!!!!!!!!!!!!!!!!!!
********!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)>?=&$$$&%%=?>>+)++*+?$#$&&%=>+!~~~~~~~~----------!?==?+!;&&&$@#@@#$=%$&&%&======??>>>>==+=>+*!!!!!!!!!!!!!!!!!!!!!!!!!!
******!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)+>=%$$$&&%==??>=$$&%%&&%=?)*;-~~~----------;>???>**%&%#@###$%??$$&%%%%%=%==?>?>>%=?=+)!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*???=%&$$$=>+)!;:::!)+>*:-------------;+???>+>%==###$$$=)?$$&&&&&%%%=?>>?>?&%=>+*!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*>)!!!!)=&>++)!;::::-^~::-------------;)>>?>>==?=##$$&=+*%#$$$$$&%&==?>??==$&?++!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)+*!!!!*>%==?>>+))*;-~~-::----------::;*>>>????>%###$&=>=##$$##$&&%==>??=%%$=++)!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))*!!!!!>=%&&&%%=>*;:----:::-:--::::;;!)???=>?>+%###$&%&$@#$###$&$%==??=%%&=>+)*!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)*!!!!!!+=&&%?+*!;::-----:::::::;;;!!*)>===>+?>+%$$$$$$$#@##@##$$&%=???%%%&>>+)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)*!!!!!;!>=?);-~^,^^~---:::;;;;!!**)+>?%%=+++?>)=&%&$###@##@@@#$&&%?>=%%%%%+>)*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!**!!!!;:.+?>*;:~^,,^^~--:;;!!**)++>?%%&&=+*)+>++&?=&###@@##@@@$&$%=?=%%%%&?++)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!;;^'!??+*;:-~^~~--:;!*)+>??=%&&&&%=>*!*>>+>@#&%#@#@@##@@$&$%=?%&&&%%&>>)*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;;,:;?=?>)!;::::;!*)+>==%&&&&&&%=?>)!;!>>+>#@@####@###@#$$&==%&$$&&&%>+*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;:%*%===?>+)*))+?=%&&$$$$$&&%=?>+)*!;!>>)?#@@@###@#$##$$$&%&&$$&&&&?+*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;?$=$?&%%%%%%%&$$$$$$$$$&&%=?>+))*!;;!+>*>$@@#@%$@#$$$$$&&$$&&&&$&%>)*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;$$#=&&&@@@@@@@####$$$&&%??++)***!!;;!)+*?%@@#$&)#@$&$$&&#$&&&&&$&>***!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;!;!!!!!!!!!!*&##&#&$@@@@@@@@###$$&%=?>+)*!!!!!;;:*)**%=#@@=%+)@$&&&&$#$&$$%&&%+*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;;!!!!!;;;!!!)&#$#&@$#@@@@@@@###$$%=?>)**!;;;;;;;:*!;*#=%@@&>+^&#$$$$##&&$&%&&=)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;;;;;;;;;;;;;;!!!)%#$&#$@##@@@@@@@@#$&%?>+)*!;;;;;;;:;*!;)#?%&@#**:*##$$$#$$$$===%=*!!!!!!;;;!;;;!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;!;;;;;;;;;;;;;;;;;;;;;;;;;!;+%&#%$#@@@@@@@@@@@@#&%?>)*!;;:::;;;:;*;!+#>#=@$!!!;####$#&$&%>?>%?*!;!;;;;;;;;;;;;!!!!!!!;;!!!!!!!!!!;
!!!!!!!!!!!!!!!!!!!!!!!;!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;;;;^+%&$$%#@@@@@@@@@@@@#$%?>)*!;:::::;::;!;!?=?@=#=)*;!##@##$&$&?>+>=?*!;;;;;;;;;;;;;;;;;;;;;;;;;;;!!!!!!;
!!!!!!!!!!!!!!!!!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-`+&&&$$$@@@@@@@@@@@#$$&=>)*!;:---::::;!!)?=&@?#)+>-!###@#$&$&?+)+?>!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!!!!!;
!!!!!!!!!!!!!!!;;!!!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:''>&&$$$##@@##&$$@@###$&=?>)!;::--::;;;*>%&&&$=%+)=:)##@@#$&$$?)*)?);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!;;;
!!!!!!!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;~'~>&$$$$#@@@#$#%%%###$$&%=?>*!;::-::;*?%&&&&$=&+?>**>$##@#$&%&=+*)>*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
!!!!!!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-,+=&$$$$#@@@@#&$>?=#@##$=+==)!;::::!+?=%%%&$&%??+=!!=$##@#&&%=%>*++!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
!!!!!!!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!=>$##$###@@@@@#%&;)+$###$&&%+!;;::;?=?>%$$$$=%>??)):&$$##$&%&=%?++*!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;!!!!;!;;;;;;;;;;;;;;;;;;;;;-~~;;;;;;;;;;;;;;;;;;;;;;;;?&$$#######@@@@@$=);!?$##$$&&?!;;::!%&=&$$#$=&>>>?++:#$&$#$&%%&&?>)!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;:~:;^,;;;;;;;;;;;;;;;;;;;;:-!%#@@@@@@#@@@@@###&&%%&####$&&?;;::;+&&&$$$#%$>);?>+*!$#$#$$&%=&$%?)!!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;--!*!!-^;;;;;;;;;;;;;;;;;*;:)=&#@@@@@@@@@@@@@##$&%%&####$&$=;:::;?$&&$$##$@)!*>+=;+$###&%&===&&>+)!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;:-!)****!~,:;;;;;;;;;;;;;!!!!>%&$#@@@@@@@@@@@@@@#$&%%$#####&$%::::!%$$&$$#@#@&%%%%**:$$##&?=%==%&?**)*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;-:)))))*!^'-:~;;;;;;;;::-~^;+?%&$###@@@@@@@@@@@@@#$&&%$##$##&$%:::;*&$$$$$#@#@&&=&>>)'+$$$&?+==?=>=+))*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;~!+>>>)+*,.;**!~~;;;::~^,~;)>=%&$$####@@##@@@@@@@@##$$&###$##&$%;::;+$&$&$$#@#@$&%&&>+'^%$&>=+????)?++)!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;-)>??>>>*.^**))**~--~,,~:!)>==%&&$$$######$$@@@@@@@##$#$###$#$&$%;::;>$&$&$$#@#@$$&&==>,.?&&>>>??>>)+++);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;::>?===??*'-*)))***!-^-;!)+>?==%&&&$$$$$$#&&$&&@@@@@#########$$$&$%+*:!?#%$$$$#@#@##$&&%>~.>&%))>?>+))*++*;;;;;;!+*,-;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;:;>=%%%%=*':)))))**!;;~:;>??==%%&&&&&&&$&$%%%=&?%@#@@##$#####$$$$&$%$%>>&#%$$$$#@#@##$$&%)~~)>=+!))>+!!**!!;;;;*=##$.`^;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;?%%%%%%*';+))))*!!;;^:;*!=%%=%%%&&&&&&&&%==??>%+%@####$#####%=&&&$%#%>?&#%$&$$$@#@@#$$&%*;!)++>)!*+>*!!!;!;;*=####?```.:;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;?%&&&&&+';++)))*!;;:^:;!!>*?=%%%%%%%%%%&%??>>+++=!%###$######$=>?%$%#%>?&#%$&&&&@#@@#$$$%*+>>>>>+)!*+*!;;;;;>$###$$^`..''~;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;?%&&&$&?.;++++)*!!;:~-::;;*?++=%%%%%%%%%=>>>+))***>-&##$#$####$$%?=&%$=&=&$%&%%%$@#@@##$$%+==????>+!:-~-::;*&#####$)`.-~,.`,:;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;!>%&$$$$%^:>+++)**!;:~~---:;:+?+)+%%%%%%%=>>++)***!;;)^$$$$#@###$$&%=%%&==>%&%=?%&$#@#@##$&&+=%====??+)!:~^,^*$>+=&%>.'-;:-~,'.:;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;!)%$$$$$$!~>>+++)*!;;~^~~----::>>)))??==%?++++))**!!:--~=$&$#$##$$$$&&%%%==+&=%)?&$$#@#@##$%??=%%=====??>+*!:-~>+-!*!:*-,;;;:~,.'-;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;)=&$##$$=,+>>>+))*!;:,~~~~~--::;?>)*)?>=>++++)))**!!:-:&=$$$$$$$$$$$$&&&&=?+&?*?%$$$###@@$$$*=%%%%=======??>>+)=)!*;*=:!:.:!;;-~,'~;;;;;;;;;;;;;;;;
;;;;;;;;;;;;)>&$$###$:*?>>++)*!!:,~^^^~~~-:::!?)**;>)>++++))**!;;-*#>>#$$$&&&&&&$&&&&&&&%=?+%$$$$$$$#@$$=!?%%%%%%=========?=%!>)+&;;!!:.:!!;:-^.~:;;;;;;;;;;;;;;
;;;;;;;;;;;;+%&$###$=*??>>++)*!;~~~^^~~^~-::;;*?*!;!++>+++))**!;:>$)%=&&&&&&&&&&&&&&&$%=%?>=&$$$$&&&&@@&#?=%%%%%%%%=%===%=%&*>++=+-;;;;:.:!!!;:~.~:;;;;;;;;;;;;;
;;;;;;;;;;;)>&$####$+??>>>++)*!:^-~~~~^~--:;;;!+>*;!!)+>+)))*!;:=&)=$&%%&&%)*;;;!)+>=&%&&=)%&$$&&&&%&$##=$&=%%%%%%%%==%%%%%>!))>%~-:::::-.:!!!!;-,-;;;;;;;;;;;;;
;;;;;;;;;;;+=$#####$=?==???>+*!~;------:-:;!!!!*++!!!!)+>+))*;;$?+?==%$%%=;:&;^,^^^-;)>%$*;**)+>>?==%&&%%&&$=%&&&&&&&%%%%%?;*))%:~~~~~~-:-.;***!;:,-::;;;;;;;;;;
;;;;;;;;;;!?&$#####$=??>>>+)++)**!;;;;;;;!!!***)+>+*!!!*?++)**$>?>==?==%%!;)@$~^^~~-!)+=&~--:;)+>?=%&=%?=%%%$=%&&&&&&&%%%+!!!*?+^^~^^^^~~-~.!****!:^:;;;;;;;;;;;
;;;;;;;;;;+?&#####$$=???>>++)*;>??+)******)))))+++>>*!;&%>>+>$>?>=?>=>=?!**!##*~~~-:;*+?$~::;!*)+>?$$%?%%==%=$=&&&&&&&&%)!:!!)=^^^^,,,,^^~:~^***)**;~;;;;;;;;;;;
;;;;;;;;;;??$$#@@@$&=???>>>+)))?>>?=>++++)+++++>>++?>!%&%>?%&???=??=+%>;::;:;:-~---:;*)>#-:;;!*)+>?&#======?%?$%&&&&&&&);-:;!%-,,^,,,,,^~~-;^-*))))*--;:;;;;;;;;
;;;;;;;;;;?=$##@@#$&====??>++)>???>?==?>>>>>>>>>>>>>=%$&)*&%=>=?>??>%+;::::::------:;!)+#:;;;!*)++>%%???====?%?$%&&&&&>:-:;;?*.,,,,,,,,^~-:!!,!))))))~;;;;;;;;;;
;;;;;;;;;;?&$##@@#$%=???>>?>>+%==????=&=?????????????$$>*%%%>=?????%);;::::::---::::;!))$!;;;!*))+>>>>????=?%?==&&&&&$?:-:;+?.,,,,,^^^^~-;!)+!~))++++!;;;;;;;;;;
;;;;;;;;;!=&$#@@@##%==??>>>++)&%%%=====&%===========&#$=&&=?=?==?=?*;!;;;;;::::::::;;!*)&*;;!**))++>>>?????%?%?==%&&&$#$*:*%~~~~~~~~--:;!*)>??-*++++++!);;;;;;;;
;;;;;;;;;*=&##@@@##===???>>+++&&%%%%====&&%%%%%%%==&####&========>)!*!*!!;;;;;;;;;;;!!*)%+;!!**))+++>>>???==%=%===%$&=###?%;:;;;;;;;!!*)+>?==%+;++++>>!?;;;;;;;:
;;;;;;;;;)=&##@@@##===???>>++>&&&&&&&%%%%&&%%%%%%%&##$$$=%=%=%==>)****!!!!!;;;;;;;;!!!*)??!!!**))+++>>>>???==%=%==%%$==@##>:***))))))++>?==%%%?~++++>>!?;;;;;;;:
;;;;;;;;;)=&##@@@##%==???>>++=&&&&&&&%%%%%&&&&&&&&##$&$%&%%%%%?>))))****!!!!!!;;!!!!!!*)>%!!***))+++>>>>???==%%%%%=%%$%$@#%>++>>>>>>>??==%%=%&&-)++>>>))!;:;::::
;;;;;;;;;)=&##@@@#$===???>>>>%&$$&$&&&&&&&&&&&&&&##$$&$$&$&&&??+++))))*****!!!!!!!!***))+$;***)))++>>>>????===%%%%%=%%##@$##=??????===%%%%%&&&&**>>>>>+*);::::::
;;;;;;;;;)=&##@@@#&====???>>>%$$$$$$$&&&&&$&&&&&####$#$$$$$&=??>>++))))*******!!******))+#!**))))+++>>>????===%%%&%%=%&@@####=?=?===%%%%%%&&&&&?!+>>>>>*>:::::::
;;;;;;;;;*=&##@@@#$%===??>>>>%$$$$$$$$&$&&&&&&$@@######$$$%%=???>>++++)))************)))+$***))))+++>>>????====%%&&%%=%$@@####==%%%%%&&%%&&&&$$=;+>>>>>!?:::::::
::;:;;;;;*%&##@@@#$====???>>>%$$$$$$$$$$$$$$#@@@#####$$$$&%===????>>++)))))))**)**))))))+%+**))))+++>>>>???===%%%%&$%&%&$@@###$%%&&&&&%&&&&$$$$%;+>>>>>!=;::::::
:::::;;;;!%&##@@@#$%===???>>>&$$$$$$$&#$$#@@@@@@#######$&%%%===????)!;)))))):;)))**)))))+??*)))))+++>>>>???===%%%%&%$$####@@##@$%&&&&&&&&&$$$$$&;+>>>>>!=;::::::
:::::::::;%%$#@@@#$%===???>>>&$$$$$$$%=#@@@@@@@##@####$&&%%=====???^`'':+))+.,));......,,^=*))))))+++>>>????===%%&=%&$$$#$#@@##@$&&&&&&$$$$$$$$$;+>>>>>*=;::::::
:::::::::;%%$#@@@#$%===???>>>&$$$$$$&=%#@@@@#@@@@@@##$&&&%%%%=====?~`)-`^))+,'*)>++)))*:.`?!*)))))+++>>>>???===%&=%%%&$#$##@@@##@$&&$$&$$$$$$$$$!)>>>>>*=!::::::
::::::::::==$#@@@#$%===???>>>&&&$$&&%&$$$$###@@@@@@#$$&$&%%&%%=====:`;>*'.*+^`!)++)++);'`^$**)))))++++>>>???===&==%%%%&$####@@@@#@$&&$$$$$$$$$$$*)>>>>>)?!::::::
::::::::::?=$##@@##%%===??>>+%&&&&&&&$$%&&$##@@@@@@#$$&$&&&&%%%%==?!`:>>+,':^`:)+))));'`~!&+***)))++++>>>>??==&===%%%%%&$###@@@@@#@@$&$$$$&$$$$$))>>>>>)?!::::::
::::::::::+%$##@##$%====??>>+%&&&&&&$$%%&&$$#@@@@@@#@##$$&&&&%%%%=?>.;>>>>:~~~*+++))-'.-!!?>***))))+++>>>>???%%>?==%%%%%&####@@@@@@#@@#$&%$$$$$$)*>>>>>)?!::::::
::::::::::*%&###@##%====??>>+%&&&&%&$%?==%&$#@@@@@########$&&&%%%====??>>>+++++++++);;*)))=%!***))))))+>>>>?=%?=>?==%%%%%$###@@@@@@@@@@@==&$$$$$)*>>>>>)?;::::::
::::::::::;%&$##@##%%%==???>+%%%%&$$=+>=%%&$#@@@@@####$#$####$&&%%===??>>>>+++++++++++)+++?$!*****))))++>>>=%??===>==%%%%&###@@@@#####@@&$&$$$$$+*>>>>?)=;::::::
:::::::::::?=&$$###$$$$$$$&&&$$###$%>>?=%&&$#@@@@@##$###$$$$$$$#&%%%==??>>>>>+++++++++++++>@;!!!!**))))+++?&????==%?%%%%%&$##@@##$&%==&@#$&&&$$$+*>>>>?)?:::::::
:::::::::::;)?=%%&&$####@@@@##$&&%%=?++?%$$#@@@@@####$###$$$$$$$$#$%==???>>>>>+++++++++++++#!;!!!!***)))++=>???=?====%%%&&$#@@##$&&%==%#@#$&$&&&+*>>>>?*?:::::::
::::::::::::::!*>%&#@@@@@@@##$$$&=?>>?>>?%&$#@@#######&$$$$$$$&&&&$$$===??>>>>>>+++>>>+++++$);;;;!!!**)))+>>>>??======&%&&&$@@##$%=?+))=@@$$&&&&)*>>>>?*>:::::::
::::::::::::::::;&$#@@@@@@@@#$&&$$?!-!>=&&$##@@########&$$$$$$&$&&%&&$$=???>>>>>>>>>>>>++++&+:::;;!!!**))>>>>>???===%%%=%&$&@@#$$%=?+)*)%@#$&&&&)*>>>>?*):::::::
:::::::::::::::::+$#@@@@@@###$$#&>+=%?>++>&&#@@#$######&&$$$$&&&&%%%=%%$&?>>>>>>>>>>>>>>>++=?-::::;;!!*))>>>>>????=%%=>>>%&%@@##$&%=?>>>?$@#$$&&?+?==??)!:::::::
:::::::::::::::::!$###@@@@#$$#$%=&=+***)+>%&#@@#$#####$$&$$$$&&&&%%%=??==$=+>>>>>>>>>>>>>>+=%----::;;!*)+>>>>>??==%%??>))+%&%@###$&=?>++>?&#@@#####$%?>)::::::::
::::::::::::::::::?#@@@@@###$%%&%+)****)+>&&$@@##$###$$$%$$$&&&&&%%==??>??=$++>>>>?????>>>>?$~----::;!)++>>>>>>?%%%?==?+)**==%#$$&%?+*!;:;+&##@@$+))*!::::::::::
::::::::::::::::::)$@@@@###$&?;*+)**!**)+?%&$@###&##$###$&$&&&&&%%%=?>>++)?+$?+>>????????>>>#-----:;!*)+>>>>>>+%=%>?=??>>)**>=&@#&=?>++>??%&&$$##+::::::::::::::
::::::::::::::::::+&#$#####&;..!+)****))+=&&$@###$&$###$$#$$&&&&%==??>++)*!>*%%)>?????????>>#:~~--:;*)+>>>?>>+%==+>>?????>+*!)=&$&?+)!;::;!))%&$#=!:::::::::::::
::::::::::::::::::>&#&$$&%=?~.'!+)*!!**))=&&$@####&###$$$$#$$&&%%=?>>++)*****)>&+??======??>#!----:!*+>>>>>>)%??)+++>??????>)**?&&?>)*;:::;!,,+$##$;::::::::::::
::::::::::::::::::>&$%%%%=??-''!+)*!!**+)%%&$@####$$##$$$$$$$&&%=??>+)***!!!!!>+$>?=======?>$)--::;*+>>??>+*=?+!!))++>>??=???>>?=%=>+*!:::;!~`,$##):::::::::::::
::::::::::::::::::>&$=%%==??-.'!+))!!*)))%%&$@####$&#$$$$$$$&$&%??>+)*!!;!;;*+!>+$?==%%===??&>-::;*+>>???+)>=*;;!!*))+>>??===%=?==%>+)!;::;!:`.&$&*:::::::::::::
::::::::::::::::::?&$=%===??-''!+)*!!**++%&&$@#####$$$$$$$$$&&&%%>+)*!;;:::*!;!*??$?=%%%%%=?&?:;;!)>??==?+>%;;:::;;!*)++>?==%%====%>+)!;:-:!;`'=$&*:::::::::::::
::::::::::::::::::?&$=%===??:'';++)***))>%%&#@@####$&#$$$$$$&&%%??)*;;;::-*;;!**)==$=%%%%%%=&=:!!)>?====?>&;:-!::::;!!*)+>?=%%%%===?+)*;:-:;!''>$&):::::::::::::
::::::::::::::::::?&$=%==???:''!++****)++=%$$@@#####$$##$$$$&%%?>+)!;::-:!::;!*)++%%$%%&&&%=%$;*)+?=%%%=?$!!~~-----::;!*)+>%%%%%%==?++*!:-:;!.`)$$+:::::::::::::
::::::::::::::::::?&$=%===??:'';+))***)++%%$#@@#####$&#$$$$&&%==>+*;;-~::-:;!*)+>?>&$&&&&&%%%#;)+?=%%&%=$+)-:----~---::;!*=>=%%&%%%=?+)!:--:!,`;&$?:::::::::::::
::::::::::::::::::=$$?====??;'';+)*****++%&&#@@######&&#$$$$&%=?+*!!:-;---:!!)+>>???&$&&&&&%%@!+?=%%&&&&=?;;;:---~~~~--:;+*?=%%&&&%%=+)*::-:!~`~&$%:::::::::::::