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