:..::::+;:::::;:::::::::::::..:::::::::::::::::::::..::::::;;;;:::::::::::::::::::::::::::::::::::::::::::::::::::...::;::;;;;:;;;;;;;;++;+++++++++++++++++++++++++++x+++++++++++++++++++++;++++++;;;;;;+;;;:..::::::::::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::
xx;::;++;::::::::::::::::::::::::;;:;;:;;;;::.:::::...::::;:;;::::::::::::::::::::;::::::::::::::::::::::::::::::::::;;;;;;;;;;;;++++;+++++++++++++++++++++++x+++++++++++++++++++++++++;;++++;;+++;;;;;;;:;;:::::::::::::::::.:::::::::::::::::::::::::::::::::::.::::.::::::::::::::::::::::::::;+
:::::;++++::::::::::::::::::::..:::;;:::::::::::::::.::::::::;;;;:::::::::::::;:::::::::::::::::::::::::::::..:::;::;;;;;;;;;++++++;+++++++++++++++++++++++++++++++++++++++++++++++++++xx++++++++;;;;;;;;+;;;;:::::.....:++;:::::::::::::::::;::::::::::::::::::::::::::;;::::::::::.::::::::::::::
::::;;:::;;:;;:::::::::::::::::::;:::;::::..::::::::::::::::::;;;+;;;;;;;+::::::.:::::::;::::::::::::::;;:...::::;;;;;;;;;;++++++;+++++++;++++++xx++++++;;++++++++xx+++++++++++++++++++++;++++++;+++;+;;;;;;;;;;;:;;;;::...:::::..:::::::::::::::.:::::::::::::::::::::::::.:::::.::::::::::::::;;:
:::::::::::::::::::..::::::;:::::::..:.::::::;;::::;;:;+;;::::;;++;;;::::::::::::::::::::::::::::::::::::.:::;;;;;;;::;;+++++++;;;++++++++;;+++++++++++;++++++x++++++++x++++x+xx++++++++xx+++++++++++++++;+++;;+++++;;;:;;;:..:+::::::::::::::;::::::::::::::::::::::::::::::::::::::::::::::::;++;
::::::::::;:::;xxx++;::::::::::::::::;::.:;;::::++:::::::::.::::;;::;;;;;::::::.:::::::::::::::::::::..:;::;;;;::;;+;++++;;;+;;+x++++;;+++++++x++++++++;;;+++++++++++++x+xxx++++++++++++++x++++++++++++++++;++;;++++++;;;;;;::...:::..::::::::::.:::::::::::::::::::::::::::::::...::::::::::::::::
:::::::::.:::::::::::::::::::.::::::::::....::::::::::.::::::::::::::::::::::::::;;:::::::::::::;;:..:;;::;;;;;;;;+++;+;;+;;++++++;;++;;;+++x++++++++;++++;;++xx+++++++++++++++xxxxx++++++++++++xx++x+++++++++++++++++++;++;;;:....:::::::::::::::::::::::::::::::::::::::::::::...::::::::::::::::
::::::::::::::::::::::::::::::+::::::::;;:::::::::::.::::::::;::::::::::::::::::::::::::::::::::..::;;;;::;;;;+++++++++;++++++;+++x+++++++++++++;++;;+++++;;++;+++++++++xxxxxxxx+++xxxxxxxxxx++++++++xxxxxxxxx+++++;+++++;+++;;;:...::::::::::::::::::::::::.::::::::::::::::::::::::::::::::::::::
:::::::+;::::::::::::::::::::::::.:::::::::::::::.:::::::::::::;;;:::::...:::::::::::::::::::::..:;;;;;;;;;+;+++;;++++;+++++++++x++++++xx++++++++++++++++++++;;+++++++xx++++x+++xx++x+++++++++x++++xx+++++++++++x++++++++++;;;;;::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::;::::;::::.:;::::::::::;;:::::::::;;:::;::::::::::::::::::::::::::::::::::::::::::...:;++;;;:;;;;;;;;;;+++++xx++++++++++xx+++++++++x+++++xx++xx+++++xx+++x+++++++++xx+++xxx+++++xx++xxxxxxxx+++xx+++xx+++++++++++;;;;+;;;:...:::::::::::::::::::::::::::::::::::::::::.::::::::::::::::::
:::::::::;:::::::::::::::;:::::::::::::::::++;::::;:+;:::::::::::::::;;::::::::::::;;::::::..:;;+;;;;;;+;:;;+;;++++++++++++++++x+++++++++++++++++xx++++++++xxx++++++++++++++x+++++++xxxxx+++x++++x++++xx++xxxxx++xxxx+++++++++;++;:::..:::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::
;;;:::::::::::::::::::.::;::::::::::::::::::::::::::::;;::::::::::::::::::.:::::::;;+:......;;;++;;;;;;;;;+++;++++++++++++++++++++++xx+++++++++++++++++++xx++++xxxx+++++xxx++++++++++++++xxxxxxxxx+++++xxxxxx+xxxxx+++xx++++++++++;;;:...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+x+::::.::::::::::::::;:::::::::::::::..::::.::::::::;+;::;::::::::::::::::::::::;xxx+;;;::;;;+++;;;:;;+++++++++++x++++++++++++x++x+++++++++++++xx+++xx++++++++++++++xxxx++++xxxxx+++++++xxx+++xxxxxxxxxxxxxx++++xxxx++xxx++++++++;;;:::..:::::::::::::::::::::::::::::::::::::+++;;:::::::::::::::
:::::::::::::::::::....:::::::::::::::::::::::::::::::::::..:::::::.:::::::::::::;;x+;;::;;;++++;;:;;+++++++++++++++++++++++xx+++++++++++++++++++++xxxxxxxxxxx+xx+++++++++xx+++++++++++++++++++++xxxxxxxxxxxxxxxx+++xxxxxxxx+++++++;;::::.:::::::::::::::::::::::;;+;;;;::;;;::::::::::::::::::::::
:::;:::::::::::::::::::::::::::::::::;:::::;+;:::::::;::::.....::::::::;;;::::::::;::..;+++++++;;;;++++++++++++xxxx++++++++++++++xx++++++++x++++x++xxx++++++++++++xxx+xxx++xxxxxxxxxxxxx+xxx++++++xxxxxxxxxxxxxxxx+++xxxxxxxxxx+xx+++;:;;:....:::::::::::::;;;;;;;:;;;;::::::::::...::::::::::::.::
::::::::;;::::::::::+;:::::.::::::::::.::::.::.:::::::;::::::.:::.:::::::::::::::::::.:;++++++;;;;;+++++;+++++++xx+++++xxx+++++x+++++x+++xx++++xx++++xxx++xxx++x++xxxx++++++++++xxxx++++++++;;+++xx++x++xxxxxxxxxxxxxxxxxxxxxxxxxxxx+;;:;;:.....:::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::.:::::::::::.::::::::::::::::::::::.::;:::;+:::::::::..:::::::;;++++x+;::;;+xx++;+++++++x++x+++x+++xx+xxxx++++++xxx++++xxx+xxxxxx++++xxxxxx++x+x+++xxxxx++++xxxxxx++;;;;+xxxxxxxxxxxxxxxxxxx++xxxxxxxxxxxxxxx++++;;;;..:::::::::::::::::::;;::::::::::::::;;:::::::::::::::.
.:::::::...::::::::::.::::::::::::::::::::::::::;::::::::::::::::::::::::::::::::...;++++++;;;;++++++++++++++++++++++x+++++++xxx+++++xxx+++++x++xx++++++xx+++++++++++++x++++++xxxxxxxxxx++++;;;++++xxxxxxxxxxxxx+xxxxxxxxxxxxxxxxxxx++++;;;;:::::::::::::::;++::;::::::::::::;;::::::::::::.::::::.
+;:::::::::::::::::::::::::::.:::::::::::::::::::::::::::;;:::...::.:::::::::::::..;++xx++;;;;+++++++++++++x+++++++xx+++xxx+xxxxxxxxx+xx+++++x++++++x+++++xx++;;;+++++++;+++;+++xx++xxxxxxXx+++++++x+xxxxxxxxxxxxx++xxx++xxxxxxxxx+xxxx++;++;::.:::::::::::::::::::::.::::::;;::.:::::::::::::::::.
::::::::::::::.::::::::::::;;:::::::::::;;;::;:::::::::::::::::::::.::...::::..::::+++++;;;;++++++++++++xx+++x+++x+++++x+++xxx++xx+++x++++x++xxxxxxxxxxx++;;+++++++++++++++x++++;+++++++xxxxxxxxxxx+;;++xx+xxXXXxxxxxxxx++++++xx+++x+xx++++++;:::::::::.::::::::::::::::::::::::::::::::::::..:::::
:::::::::::::::::::::::::::::.::::::::::::::.:.::::::::::::.:::::::::::::::::.:..;++++;;;;+x++++x+++++++++++++++++xxxx++++xx++xxxxxxxxxxxxxxxxxxxxx++++++++xx+++++++xxxxxxxxxxxxx+xx+++++xxxxxxxxx++;;+++++++xxxx+++xxxxxxxx++++++xxxxxx++++++;::;::::::::::::::::::::::::::::::;;;:.:::::::::::::;
::::::::.:::::;:::::::::::::::::::;;;::::;:::::::::::::::::::::::::::::::::::..:;++++;;+++++++++++;;++++xxxxxxxxxxxXxxxXXxxxxxxxXxxxxxxXxXXXXXxx+++++++++++++++xxxxxxxxxxxxxxXXXXXXxxx+++++xxxxxxxx++;;;++xx+++++xxx+++++xx++xx++xxx+xXXxx++++;:::::::::::::::::::::::::::::::::::::::::::::::::::;
::::::::..:::::::::::::::::::::::::...::::::::::::::::::::;:::;;;;;:::::::::...;++;;;++;++;+++++++;;+xxxxxxxXxxxXXXXxxxxxxxxxxxxxxxxxx+++xxx+++++++++++;+++++++xxxxxxxxxxxxxXXXXxxXXXXxxx++xxxxxxxxxxxxxxxxxxx+++++++++++++xx+++++++++x++xx++;;;;:::;::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::...::::::::::::::::::::::::;;:::::.::::::...:;++;;++;;;;+++++++xxxxxxxxxxxxxxxxxx+++++xx++++++++xxxxxxx++++++++++++++++++++xxxxxxx+x+:....:;+xxxxxxxxxxxxxxxxxXxxxxxxxxx++x++++++xxx++++++++++++++++++xx++++;;;:;:::::::::::::::::...:.:::::::::::::::::::.::::::
::::::::::....::::::::::::::::::::::::::::::::::::.:::::::::::::::::.:::::::::;;;;;;;;;;;;:;+++++;+;;++;++++++++++++x++xxx++++xxxxxxxxx+++x+++++++++++xx++++xxxxxxx+;...........:;+xxxxxxxxxxxxxxxxxxxxxxx+xxxx++++++xx+++++++x+++++++++++++x+++;;::;;:::::::::::::.....:;:::::::::::::::::::::::::
:::::::::::::;;;;::.::::::::::;;;;;:::;:::::::::::::::::::::::::::::.::::...:::;;::;;;++;+++++;++++++++++++++++++++++xxxxxxxxxxxx+xxx+++++++++++++++++++++++++xxxx:................;+xxxxxxxxxxxxxxxxxxxxxxxxxxxx+++++++++++++++++++++++++xxxx++++;;++;:;;::::::::::::;++;::;;:::::::::::::::::::::
:::::;:::::::::::::.::::::::::::::::::::.::::::::::::::::::::::::::::::::..::::;;;;;++;;++++++++++++++++++++++++++++x++xx+++xxxx+xxx++++x+++++++++++++++++xxxxxx+.......;xx+;::.....:+xxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++xx+++++++++++++++xxxxxx++x+;:;+++x++;;::;;;;:;;;+++;::;:::::::::::::::::::::
:::::::;:::::::::::::::::::::::::::::.::::::::::::::::::::::::::::.:::....::;:;+++x+++x+++++++++x+++++++++++++x+++++++xx++++++xx+xx++++x+++++++++x+++++++xxxxx+:.....:X$$$$$$$$Xx::...;xxxxxxxXXx+xxxxxxxxxxxxxxx++++++++++x++++++++++xxxxxxx+xxx+;::;;;;;;;;;;;++++xx+;:::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::;;;xxx++++++++++++++++x+;;++++++++++x+++xxxxx+++++++++x++xx+x++++++++x+++x+++xxxxx:......+$$$$$$$$$$$$$X;:.:++xxxxxxxxxXXxxXXxxxxXXxx++xx+++++++++++xxxxxxxxx++++xxxxx+;;;++;;;::::::::::;;:::::::::::::::::::::::::::::
::::::::::::::;:::::::::::::;::::::::::::::::::::::::;;:::::::::::::::::::;;++xx+xx+x++;;x++;+++;++++++++++++++x++++xxxxx++++xxxxxxxx+x+++++++++++++xx++xxxx;.......$$$$$$$$$$$$$$$$x:::++xxxxxxXxxXXXXXXxXXXXXxxxxxxxxx+++++++xx++++xxx++xx+++xxxx+:;+;::;;;;;::;;::::;;::::::::::;:::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;::::::::.:;:::;;+xX+.:++++++++++++++;;++;;++++++;;++xx++++++xxxxxxxx++xxxx+x+++++;;+++++x+++xxx+........;XXX$$$$X$$$$$$$$$+..:++xxxxxXXxXXXXXXXxxXXxxxxxx+xxxx+xxx+xxxxxxxxxx++xxxxx+++++;:::::::::;:::::::;;:::::::::::::::::::::::::::
::;:::::;;;;::::::::::::::::::::::::::::::::::::::::::::::::;:;;;::::.::;;+xx;...:xxxx++++x+++xx++++;;++++++++++xx++xx+xx++++x++xxx+++x+xxx++++++x+x++++xx;........;+xXXXXxXX$$$$$$$$X:..+;+xxxxXXxxXXXXXxxXxXXxxxxxxxxxxxx++xx+++xxxxxxxx++xxxxxx+;;;;;;:::::::::;;;;;;;++;::::::::::..:::::::::::
::::::::.::::::::::::.:::;:::::::.:::::::::::::::::::::::::::::::::::::;;;x+;;....+xxx+++;+++++;++;;++;++++++++++++++xxxx+++++++xxxx+xxxxx+++x++x++x+;++xx;........x$$$$$XXxX$$$$$$$$$;..;++xxxxxXXxXXXXXXxXXXXXxxxxxxxxxx++xxxxxxxxxxxxxxxxxxxxx++;;++;;;:::::::::;;;;;:::::;::;::::.:::::::::::::
:::::::::::::::::::::::.:::::::::::::::;::;;:::::::::::::::::::::::::::;;++;+x+....+xx++++++++++++++;;;;++++;++++++++xxxx++++xxxxx+++xxxxx++xx+xx++x++++++.........;$$$$$$XxxX$$$$$$$$+..:++x+xxxxXXXXXXxXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+;;;+;;;;:;;::;:::;;:::;;;;::::::::::;:::.:::::::
:::::::::::::::::::::::::::::.:::::.::+;::;;++::::::::::::::::::;;;:.:;;;:;XX$$:....:xxxx++x+++++++++;;;;++;;++x++x+xx+xx+++xxxxxxx+xxxxx++++++x+++x++++++:.........x$$$$$$XX$$$$$$$$$;...+xx+xxxxXXXxXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+++;;;;:;;;;:;;++;::::::;;::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::;;::::::::::::::::;;:::;;:;;:+$$$$$x.....:xxxx+++++x+++++++++x+;;+++xxx+x++xxx+xxxxxxxxxxxxxxxxxxxx++++x+++x+++..........;X$$$$$$$$$$$$$$X....+xxxxxx+XXXXXXXxXXXXXXXXXXxxxxxxxxxxxxxxxxxxXxxxxxxxxxxx+;;;;;;;;;;:;;:;::::::::::;;::::::;;:.:::::::::::
::;::::::::::::::::::::::..:::::::::::::::::::;;:::::::::::::;:::::;+++;x$$$$$$$;.....:+xxxx++xx++++;;++;+++++++x+++xxxxxxxxxx+xxxxxxxxxxxxxxxxxxx+xxxxx++x;...........x$$$$$$$&&&&$X;....xx+xxxxxXXXXXXXXXXXXXXXXxxxxxxxxxxxxXXXxXXXXxXXxxxXxxxxx+;;;+;;;;+++;;;:::;:::::;::::::::::::::::::::::::
:::::::::::::::::::::::::.:::::::::::::::::::::::::::::::::::;++::;;::+x$$$$$$$$$......;+x+x+xx++x+++;;;;+x++;;+xxx+xxxxxxxx++xxx+xxxxxxxxxxxxxxxxxxx++xx++x+:...........:;xXXXXXx+:.....+xxxxxxxxXXXX$XXXXXXXXXXXXxxxxxxxxxXXXXXXXXXXXXxxxxXxxxx+;;;;;++;;++++++++;:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::;:::::::;;:.:::::::;::;;:::::::::::;;+;:::::;X$$$$&$$X$X.....:+xxx++xx++++++++++x++;;+x++xxxxxxxxx+xxxxxx++xxxxxxxxxxxxxxxxx+xx++xxxx;.......................:xxxxxxxxxxX$XXXXX$XX$XXXXXXXXxxxxxXXXXXXXXXXXXXXXXXxxxxx++;:;+;++;;;;;;;;+;:::;::::::::::::::::::::::::::::
::::::::::;;;:::++;;+;::;::::::::::::::::::::+;::::::::::;;:;;;;;;;:::;X$$$$$$$$X$+....:+x+xxxxx++++++xx++x++;++xxx++x+xx+xxxxxxxxx+xxxxxxxxxxxxxxxxXxxxxxxxxxxxx+;..................;xxxxxxxxxxxxX$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx+;;;:;+++++;;;;;;;;::::::::::::::::::::::::::::;:::
;++::;:::::::::::::::::::::::::::;+++;::::;;:::::::::::::;::;+;;;:::::;X$$$$&$$$$$x.....+x++xxxxxxxx++++x+x+++++xx++xx+x++xxxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+;:......:;+xxxxxxxxxxXXxxXX$$XXXXXX$XXX$XXXXXXXXXXXXXXXXXXXXXXXXXxXXXXxxx+++;;;;+;;;++;.:++;;::;::::::::::::::::::::;;::::::
:::::::+;::::;;;:::::::::::::+x;:::::::;++::::::::::;;;;++;:;;++:::::::x$$$$$$$$$$x:...:xxxxxxxx++++x+++++x++++xxx+++xxxxxxxxxxxxxxxxxxxxXxxXXxXxxxxxxxxxxxxxXXXxxxxxxx+++xxxxxxxxxxxxxxxxxxXXXXXX$$$XXXXXXXXX$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXxx+xXXx;;;;;;;+++;:;;;+;;+x+;:;;:::::::::::::::::::::::
:::::.:;::;;;::::::;;::::..::::::::::;:::::.::;::::::;+;;;:;+;::;;;;:::+X$$$$$$$$$;:...+xxxxxxxxx+++xx++xxxxxx+++xxx+xxx++xx+xxxxxxx+xxxxxxxxXxXxxxxXxxxxxxxxXXXXxxxxxxxxxxxxxxxxxxxxxxxxXXXXXxxXX$$X$XXXXXXXXXX$$XXXX$$XXX$$X$XXXXXXXXXXXXX+;;;;;++x+++;;;++;:::;;::;++;;;;+;;;;:::::::::::::..:::
::::::::::::.::::::::::::::::::::::::::::;:::::::++;:::;;::+Xx+;;:;;;::;x$$$$$$&$x::.:+xXxxxxxxxxxxxxxxx+xx+xx++xxxx+xxxxxxxx+xxxxxxxxxxxxxxxXXXXXXXXXxXxxxxxXXXXXxxXXxxxxxxxxxxxxxxxxxxxXXXXXXXXX$$XXXXX$XXXXXX$$XXXXX$$XXX$$$$$XXXXXXXXXX++xxxx++;::;;;+++::;;;:::::;;;;:;;+++;;;;:::::::::::::::
:;;::::::::::::::::::::::::::::::::::::;x+:::::++;:;x+;;;+:;;;+;:::;;;;++X$$$$$X+:.::+xxxxxxxxxxxxxxxxxx++xxxx+++x++x++xxx++++xx+xxxxxxxxxxxxXXXXXXXXxxXXXXxXXXXXXXXXXxxxxxxXXxxxxxXXXXXXXXXXXXXXX$$XXXxXXXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$XXx+;;;;;;+;;;;;;;;;::;;;;;;:::::;;;;++;;++++::::::::::::::
:::::::::.::::::::::::::::::::::::::::::::::::::::::::::;;;;;;::::::::;++++:::......+xxxxxxxxxxxxxxxxxx++xxxxx+++xx+++xxx++++++++xxxxxxxxxxxxxXXXXXXXXxXXXXXXXXXXXXXXXXXXXxxxXXXXXXXXXXXXXXXXXXXX$$$$$$XX$$XX$$$$$$$$$$$$$$$$$$$$$$$$$$Xxxx+++;;;;+xX++;;;;;;;;+;;:;;;::;+;:::;++;;;::;::::::.:::::
::::::+;;::::::::::::::::::::::::::::::::::::::::::::::::::;+;::::::;;+xxx++:......;xXXxxxXXxxXxxxxxxxxxxxxxx+++xxx++xxxxxxxxx++xxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$XXXXXX$$$XXXXXXXXXXXXX$$$$$$$$$$$$$$$$$$$$$XxxXxx+;;+;;+++++;++;;;;;::;;++++;:::;;;;:::::::::::::::::::::
.::::::::::::::::::::;;::::::::::::::;::::::::::::::::::::::::::;+++++xXXxx+;;:..:+xxXXXXxXXxxXXxxxxxxxxxxxxxx++xxx+++xxxxx++x++xxxxxxxxxxxxxxxxX$$XX$XX$XXXXXXXXXXXX$$XXXXXXXXXXXXX$$$$$$XX$$$$$$$$$$$$$$$XXX$XX$$$$$$$$$$$$$$&$$$Xxxxxxxxx++;;;;;;+;;;::;;;;::::::::::::::::::::::::;;:::::::::::
:::;+;::::::::::::::::::::::::::::::;;:::::;;:::::;;:;::;;:::::;;;::;++xxxx+++;;+xxxXXXXXXxxxxXXXxxXxxxxxxxxx+++xxx+xxxxx+++++++xxxxxxx+xxxxxxxxXXXXX$$XX$$$$XXX$$$$XX$$XXXXXXX$$$$$$$$$$$XX$&&&$$$$$X$$$$$$$$XX$$&&$&&&&$$$$$$$$Xxxxxxxxxxxxxx++;;;;+;:::::::::;;:::::::::::::;;;;::::::::::::::::
:::;:::::::;::::::::::::::::::::::::::::::::::;;;;;;;:::::::::;;:::;;;;xxxxxxxxxxxXXXXXXXXXXXXXXXXxxXxxxxxxxx++xxx+++xxxxx+++++xxxxxxxxxxxxxxxxxXXXX$$$$X$$$$$$X$$$$$X$$XX$$$X$$$$$$&$$$&$$$&&&$$$X$XXXX$$$$$X$$$&&&&&&&&&&&&$XxxXxxxxxxxxxx;;xx+::;;;;::::::::::::::::::::;;:::::;;;;:::::::::::::
::+;:::;+;::::::::::::::::::::::::::::::::::::::+;:::::;;:::::;;;;;;;;+++x+xxx+++xXXXXXXX$XXXXXXXXXXXXXXxxxxxxx+xxxx++xxxx++xxxxxxxxxxxxxxxxxxxxxXXXXX$$XX$$$$$$$$$$$$$$$$$$$$$$$$$&&$$$$$$&&&&$$$$$XXX$$$$X$$$$&&&&&&&&&&&&&&$XXXXXxxxxxxxxx+++xxxx+;;;::::::::::::::;+;:::;;:::::::;:::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::;:;;;;::::::::::;::;;;+xx;+xxXXxxxXXXXXXX$$XXXXXXXXXXXXXXXXxxxxxx+xxxx+xxxx++++xxx++xxxxxxxxxxxxxxxXXXXXXXXXX$$$$$$$$$$$$$$$$&$$$$$$$$$$$&&&&&&&&$$$$XXX$X$$$$$$$&&&&&&&&&&&&&&&&$XxxXXxxx+xxxxx+xx;;;;;+xx;::::::;;++;++;::::::::::::;;:::::::;:::::
::::::::::::::::::::::::::::::::::::.::::::::::;:::::::;:::::;;;;;++++++++xXXXXXXXXXXXX$$$XXX$X$$XX$$XXXXxxxxxxxxxx+xxxxxx+x++++++xxxxxxxxxxxxxxxxxXXXXXXXXX$$$$$$$$$$$$$$$&$$$$$$$$$$&&&&&&&&$$$$$$X$$$$$$$$$&&&&&&&&&&&&&&&&&$XxxxXXxxxxxxxx;:::::;;:;x+;;::::::::;;;:;x+;;:;;;;::;;:;;::++;...:;
::;::::::;;:::::::::::::::::;::::::::::::::::::::;;::;;;:::::::;x+;;;;;;;;+xxXXXXX$XX$$XX$$$$$$$$XX$$$XXXxxxxxxxxxx+xxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxxXXXXXXXX$$$$$$$$$$$$$$&&$$$$$$$$$$X$&&&&&&$$$$$XX$$$$&&&&&&&&&&&&&&&&&&&&$$$XXxxxx+xxxxxxx++++;++;;;+;;;:;:::::::;;;;;;;;;;;::;x+++++++++:::;:
++++;:::;++;::::::::...:::::::::::::::::.::::;;::;;;+;::::::::;;;;;+;;;++x+++XXXX$$$XX$XX$$$$$$$$$XX$$XXXxxxxxx+xxxxxxxxxx++xxxxxxxxxxxxxxxxxxxxxxxxxXXXxXXXXXX$$$$$$$$$$$$$$$$$$$XXXXXXX$&&$$&$$$$$XX$$$&&&&&&&&&&&&&&&&&&&&&$$$$Xx+xxXXXXXXXxxxx+++++xx+;::::::::;;::::::::;::;+;+xx+++;++;;;::::
:;;;:;;;:::::::::::::::.::::::::::::::::::::;;::;;::;++++;:::::;+++;;;++++;++xxXXXX$$$$$$$$$$$$$$$$XX$XXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXxXXXXXX$$$$$$$$$$$$$$$XXX$XXX$$&$$$$$$$XX$&&&&&&&&&&&&&&&&&&&&&$$XXXXXx+xxXXXXXXXxx++xxxxxxxxx+;;;:;;::;::;+++;::::;++x+.......:::;;++
:;+:::;;::::::::::::::::::::::::;:::;::::;::::::;::::;;;;::::::;;;;;;+;++++++;;+xxXXXX$$$$$$$$$&$$$XXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXX$$$$$$$$$$$$$$XXXXXX$$&&$$$$XX$&&&&&&&&&&&&&&&&&&&&$$XXXXXXX+;+xXXXXXXXXXXxxxxxxxxxxx+;.::::::::::;;;;;;:;+x+:::::::;;++++++
::;;;;+;:::::::..::::::::::::::::::::::::::;:::::;::;;:;;;;++;;;;++;;+++++;;++++xxxxXX$$$$$$$$$$$$$XXXXxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxxXXxxxxxxxxxxxxxxxxxxxxXXxxxxxxXXXXX$$$$$$$$$$$$XX$XXXX$$$$$$X$&&&&&&&&&&&&&&&&&&&&$$XXXXXXXXx+;xXXX$$$$XXXxxxxxxxxxxxxx+;::;;:;;;;::::::;;;xx+::::::++++xx+;
::::::::::::::::::::::::::::::::++;::::::::++;:;+;::;:::;++++;;++;;;+;;+;++;;++++++++++xXXXX$$$$$$XXXXXXXxXxxxxxxxxxxxxxxxxxxxxxxXxxxxxXxxxxxxxxxxxxxxxxxxxxxxXXxxxxxXXXXXXX$$$$$$$$$$XXXXXXxX$$$$X$&&&&&&&&&&&&&&&&&&&&$XXXXXXXXXXXx++xXX$$XXXXXxxxxxxxxxxxxx+;;;:::;::;;;;;;::;+XXXxx+xxxxx+;;;;:
:::;;:::::::::::::::::::::::::::::::::::::;+;;:;+;:;+::;+;::::;+x++xXxx+;+;:;++x+++++++xXXXXXX$$$XXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXxxxxxXXXXXXXX$$$$$$$$$$XXXxxX$$$$&&&&&&&&&&&&&&&&&&&&&$XXXXXXXXXXXXx+++xxx+xXXXXxxxxxxxxxxxxxx;+;::;;;:;;;;;;;;;xXXXxxx+++;..;;;::
::::::::::::::::::::::::::::::::;:::::;;;;;;:;;:::::;;;::::::;++++++xxx+;;;;+++++++++xxxXXXXXX$$$XxxxXXxxxxxxxxxxxxxxxxxxXxxxxxxxXxxxxxxXXxxxxxxxxxxxxxxxxxxxxxXXXxxXxxXXXXX$X$$$$$$X$$$$XXXxxXX$&&&&&&&&&&&&&&&&&&&&&$XXXXXXXxXXXXXxxx++xx;;++xxxxxxxxxxxxxxxx+;;;;;;;;;;:::;;;;+xxxxxx+++:..;;:::
;;;::::::::::::;;;:::::::::::::::::::;;;;+;+;;;::;;;+x;:::::::;;;;+++++;;;;;++++x+;+++xxxX$XXXX$$XxxxXXXxxxxxxxxxxxxxxxxxXXXXXxxXXXXXXXXXXxxxxxxxxxxxxxxxxxxXXXXXXXXXXxXXXXX$$XX$$$$$XXX$XXXXXxx$&&&&&&&&&&&&&&&&&&&$$XXXXXXXXXXXXXXxxx++;:::;;++++xxxxxxxxxxxx+;;:::;;;;;;:::::;;xXx:;++++++;:::::
::::::::::::;+:::::::::::::::::::;::::::::::;:;:;+;::+;;;;;;::::;++++++++++++;;+++;+xxx++xxxxxxXXx+xxxXXXxxxxxxxxxxxxxxxxXXXxxXXXXXxXXXXXXXXxxxxxxxxXxxxxXXXXXXXXXXXXXXXXXXXX$$XX$XXXXXXXXXXXXXxX$&&&&&&&&&&&&&&&&&$XXXXXXXXXXXXXXXXXxxx+;:;;++xxxxxxxxxxxxxxxx+;;;:::;;;;;+;;::::;++;++;++++x++;;;
::::::;;::::::::::::::::::;;::::;+;::::;:::::;;;+;;:::::::::;;;++x+;;;+;++++;+;;+++;++++++xxxxxxx+++xxXXXXXxxxxxxxxxxxxXXXXXXxxxxXXXXXXXXXxxxxxxXxxxxxXxxxXXXXXXXXXXXXXXXXXXX$$$XX$XXX$$$XXXXXXXXxX&&&&&&&&&&&&&&$$XXXXXXXXXXXXXXXXXxxxx+;::;+xXXxxxxxxxxxxxxxx+:::;;;:;:::;;;:::::::::;+xx+xX$$XXX
:::::::::::..:::::::::::+;;;;:;;::..:::;;;;;;;;:;:::::;:::::;+x++++;;++;+++;:;++xXX++xxx++xXXXxxXxxxxxXXXXXXxxxxxxXXxxxxXXXXXXxxXXXXXXXXXXXXXXxXXxxxxxxxXxXXXXXXX$$XXXXXXXXXXX$$$$$$XXX$XXXXXXXXXxxX$&&&&&&&&&&$Xx+xXxXXXXXXXXXXXXXX+;;;;;::;+xxxxxxxxxxxxx++x+;:.:::;;::::::;;;;::;::;;+x++X$$$$$X
:::;::::::::::::::::::;::::::::::::;+x;;:;;;;;;:;;;::;+;;;;;;x+;;;++xx+++;;;;;;;xXXxxXx++++xx++xxXxxxxXXXXXXXXxxXXXXXXXXxXXXXXxXXXXXXXXXXXxxXXXXXxxxXxxxXxXXXXXXXXXX$XXXXXXX$$$$$$$$$XX$XX$XX$XXXXxxxX$&&&&&&&$XxxxxxXXXXXXXXXXXXXXx+;;;:::;xxxxxxxxxxxxxXXxx++;;;::::;;++++;;::::::::;++xXXX$$$$Xx
::;;::::::;+:.:::::::::::::::::::;;;;;:::;+++:::::;;;::::::+xx+;;;;+x;;++;;+++++X$Xx;:;;;++xx++xxxxx+xxXXXXXXxXxXXxXXXXXxXXXXXxxxxXXXXXXXXXxXXXXXXXXXXXXXXXXXXXX$$$X$$XXXXXXX$$$$$$$$$$$$XXXXXX$XXxxxxxxxX$$$Xx++xxXXXXXXXXXXXXXXXXxx++;::;xxxx+xxxxxxxxxxXXx+;:::::::;:;;;;:::::::::::::;;+x;:;;;+
;:::::::::::::::::::::::::::::;;;;+;:+;+;:::::::::::;++xx++XXx+;;+xx++;+;;+++++++++;;;;;:+XXx+++++xx+xxXXXXXXxxxxXxXXXXXxxXXXXXXXXXXXXXXXXXXxXXXXXXXxxxxXXXXXXXXXXXXX$XXXXXX$$$$$$$$$$$X$$XXXXXXXXXXxxxx++xxXXXxxxXXXXXXXXXXXXXXXxx+;;;+++xxxxxxxxxxxxxxxxxxx+;;;;::::;;:;;:::::::::::::;::::::::;;
x;::;;:::::::::::;;;;:::::::::::::::;;++x+:::;;;;;;;+++++xXXX+;;+xxxx+;;+++++;;++;;++;;;+xXx+++;;;+xxx+XX$$XXXxxxXXXXXXXXXXXXXXxXXxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$XXXX$XX$$$$$$$XX$XXXXXXXXXXxxxxxx++++xxXXXXXXXXXXXXxxxxx++;:;;xxxxxxx+++xxxxxxxxxxx+;;:;;++;::::::;:::::::;;:::::::;:::;++
:::::::::;::::;::;;;::::::::::::;+;:;+++;;;:;;++;;;::::::;+;;;;;++++;;++++;;+x+xx++;;;;;+x++;;:;;++xxXxxXXXXXXxxXXXXXXXXXXXXXXXxxXXxXXX$XXXXXXXXXXXXXXXXXXXXXXXXXX$$XXX$$$$XX$$XXX$$$$$XX$XXXXXXXXXXXXXXXxxxxxxxxxxxXXXXxxxxxxxx+;:::;xxXXXXXXXXxxxxxxxxxxxx+;;;;;:::::......:::::::::::::::::::;;:
::::::+;::;:;;::;;;:::::::::::::;;::;+::;;;:;xXx+++++;;;::::;;+x++;;;+++xxxxxxXx+;;;++++++++;;;+++;+xXXxxXX$$$XxxXXXXXXXXXXXXXXxxXXXXXXXXX$XXX$XXXXXXXXXXXXxXXXXXXX$XXX$$$$$X$$$XX$$$$$$$$$$XXXXXXxXXXXXXxxXxxxxxxxxx+xxxxxxxxxx++++++XX$$$$$$$XXxxxxxxxxx+++;;;;::::::.:::::::::::::::::::::::::::
;:::::::::::::::::::::::::::::;::;+++;:;++;;;;+XXx+;;++;::::;;xx++++++xx+xxxx+++++++x++;;++;;;;+++;;+XXXxXXX$$$XxxxXXXXXXXXXXXXXXxXXXX$XX$$$X$$XXX$XXXXXXXXXXxxxXX$$XXXXXX$$X$$$$XX$$$$$$$$$$$XXXXXXxxXXXXXxxxxxxxxxxxx++++xx++++xxxxxxxxXXXXX$$XXxxxxxxxx+;::;;:::::::::::::::::::::::::::;+::::::
::::::::::++:::;;:::::::::::;;+;++;;x;:;+++;:::;::;++;:::::::;xx+;;++xXXx+;;+;;+xXXX+;;+++;;;;;+++;+++xxXXXXX$X$XxxXXXXXXXXXXXXXXXXXXXXX$$$$$XXXXXX$XXXXXXXXXXXXXxXX$XXXXX$XXXX$$XX$$$$$$$$$XXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxXXxxxxxxxXXXXxxxxxxx++;;;;:;;::::::::::::::;;::;::;;::;;::::::
:;;;::::;+;:::::::::::::::;;;;+;;;;:;;::::::::::;++;:::;;++++xXx;+;;+Xxx++++;+xxXXxx++;++;:;;;;;+;;++;+xxXXXX$$$$XxxXXXXXXXXXXXXXXXXXX$$$$$$$$$$$XXX$$XXXXXXXXxxXXXXXXXXXXXXXX$$$XXXX$$$$$$$$$$$XXXXXXXXXXXXXXXxxxxxxXXxxxxxxxxxxxxxxxxxxxxxxxxXXXxxxxxxxxx;:;;::::::::::::::::::::::::;:::::::::::
::::::::;;::::::::::::;;;:;:::::::::;++;+;::;;:;++::;;::;;:;++x+;+++++;;;+;;+xx+xx++;;;;+;;++;;;;;;+;;+xxXXXXXXX$$xxXXXXXXXXXXXX$XX$XX$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXxXXXXXXXXXX$$$$XXX$$$$$$$$$$$XXXXXXXXXXXXXxxXxxXXXXXxxxxxxxxxxxxxxxxxxxxxxXXXxxxxxxx+;+;;;;;::::..:::::::::::::::;:::::::::::::
::.::::::::::::::::::::::::::::::::;;++::;++:::;;;:;;;:;;;;++;++;++;;;;;;;;;;+++++;;+++;;;+;;;;;;;++++xxxxX$XXXXXXXxxXXX$XXXXXXXXXXXX$XXX$$$$$$$$$XXXXXXXXXXXXXXXXxXXXXXX$XX$XXX$$$$XXXXXXXX$XXXXXXXXXXXXXXxxxxxxxxxXXXXXXxxxxxxxXXxxxx++xxxxxXxxxxxxxxx+;:::;;;:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::+++xx::::;::;:::;;+xxx+++xx++++;;++x+;++++;;+x+;;;;;;;;;++++xxxxxxXX$XXXXXX$XxxXX$$X$XXXXXXXXXXXXXX$$$$$$$$XX$XXXXXXXXXXXXXXXxxX$$$$$$XXX$$$$$$XXXXXXXXXXXXXXXXXXXXXxXxxxxxxxxXXXXxxxxxxXxxxxxxxx++xxxXxxxxxxxxxx+++;::::::::::::::::;::::::;;::::::::::::::
::::::::::::::::;:::::::::;;;::::::::;+x++;:::::::;+:;++++xx+++++;;+;;;++++;;+xx+++xxx+;;;;++++++++++xxxxXXXXXxXXX$XXxXX$$XXXXXXXXXXXXXXXXX$X$$$$$$$$XX$XXXX$XXXXXXXXxxX$$$$$$XXXX$$$$$XXxXXXXXXXXXXXXXXXXXXXXXxxxxxxXXXXXXXxxxXXXxxxxxxx+xxxxxxxxxxxxxxx++++:::;:::.:::::::::;;:::::::::::::::.:::
;;::::::::.:;;;;;::::::::::;;:.::;;;::::::;;;:::::::;++++;++++;;+++++;+++x+;+xx++;;++;;++x+++++;+++++++++xXXXXxxX$$$XXXXX$$X$$$X$$XX$XXXXXXXXX$$$$$$$XX$$$$XXXXXXXXXXXxxX$$$$$$XXXX$$$XXXXXXXXXxxxxxxxXxxxxxxxxxXXxxxxXXXXXXXXXxxxxxxxxxxXxxxxxxxxxxxxxx+;;;:;;;:::::::::::::::::;;:::;:::::::::::.
::::::::::::::;+;+;::::::;;:;;::;::;+;+++x+:::;;;:;+x+;;;+++++++;;;;;;++;++;+;;;+;;;;;+++++x+;;++;+++++++XXXXX$XxX$$$XxxXX$$$$$XX$$XX$XXXXXXXXXX$$$$$XX$$$$$$XXXXX$XXXXXxxX$$$$$$$XXXXXXXXXxXXXXXxxXxxxxxxxxxxxxx+xxxXXXXXXXXXXXXXXXxxxxxxxx++xxxxxxxxxx+;;;;::::::::::::::::::::::::::::::::.:::::
::;;:::::::::::;;;::::::::;++;::::::;+++;+;;::;:::;::::;::++++++++;;:++++;;;;;+++;;;++++++++;+x;+++++++;++xXXXXXXXX$$$$XxXX$$$$$$XXXXXXXXXXXXXXXXX$$$$$$$$XXX$$$$XXXXXXXXxx$$$$$$$XXXX$XXXXXxXXxxXXXxxxxxxxxxxxxxxxxxxxXXXXXXXXXXxxxxxx+++++x+xxxxxxxxx+;;:;:::::::::::;::::::::::::::::;+;::::::::
++++;::::::::::;:::::;;+;:::::::;;+++x;:;+;;;;+;;;::::;;:;;++++++;;+;;+++++++++++;;++++;+x+++;++++xx++;;++xxXXXXXxXX$$$$XxXX$$$$$$$$$$$XX$$$$&&$$$$$$$$$$$$$$$$$$$XXXXXXXxxX$XXXX$XXXXXXXXXXXXXxXXXXXx+;+XXxx;;+xxxxxxxxxxxx++++x+++++++x+++xxxxxxxxxx++;::::::::::::::::;;;;;;::::::::::::::::.:::
:::::::;;::::::::::::::::::::::;:;;:::::::;;:;;:::;;::;::;;;++xx;:;;;;;;++xx+xxx+;;;++;+++++;+++x+++++;+x+xXXXXXXXxX$$$$$$XXX$$$$$$$$$$$$$$$$&$$$&&&$$$$$$$$XX$XXXXXXXXXXXxxxxXXX$$$XXXXXXXXXXXxxxxXxx++XXXx;:;xXxxxxxxxxxxx+++++xx+++x+xxx+xx+xxxxxx+;;;;;;:::;:::::;:::::::::::::::::::::::::::::
+;;;;:::::::::::::::::::::::::::::::::::::::::::::;;::::;;;;;+x+;;+;;;+++;;++x+++x+xxX+;;;;;;++++++xx+++xxxxXXXXXXxxXXX$$$$XXX$$$$$$$$$$$$$$$$&&$$&$$$$$$$$$$$$$X$$XXxXXXxXXxxxXX$$$XXXXXXXXXXXXXxxxxxxxx++++xxxxx++++++++++++++++++xxxxxxxxxxxxxxxxx+;::::::::;;:.:;;:::::::::::::::::::::::::::::
:::::::::::::::::::::::;;:;;;:::::::;::::::::::;;;:;;:;;;;+;;+++;;;;;+x++;;;+;;+xxxxx+;;;+++xxxxx+xxx+;;++++xXXXXXXxxX$$$$$$XXXX$$$$$$$$$$$$$$$$$$$$X$$$$$$$$$$$$$$XXXXXXXxxXxxxX$$$$$XXXXXXXXXXXXxxxxx+++x++++++++xxx+++++++x+++xxxxxxxxxx+xxxxxxxx+++:::::::::::....:::::::::::::::::::::::::::::
:;:::::::::::::::::::::::::::::::::;;:::::;;++;;+++;;;;;;;+;+xx++;;;+x+;+++xxxxxxxx+;;;+xxx+xXXXXxxx+++;+;;+xXXXXXXxxXXXX$$$$XXXX$$$$$$$$$$$$$$$$$$$X&&&&$$$$$$$XXXXXXXXXXXXXxxxxxXXX$$XXXXXXXXXXxxxxxxxxxx+++++xxxxxxxxxxx++++x+xxxxxxxxxx+;+xxx+++;;;:::++;::::::::::::::::::::::::::..::::::::::
:::::;;;::::::::::::::::::::::::::;::::::;;+;;;+;:;;+;;;:::;xXXXxxxxxXxxx+++xxxxxxx;+;;+xx+xxxx+;+++;;;;;;++xXXXXxxxxxXXX$$$$$$XXXX$$$$$XXX$X$$$$$$$$$$&&$$$$$$$$XXXXXXXXXXXXxxxxxxX$$$XXXXXXXXxxxxxxxxxxxxx+++xx+xxxxxxxxxxx++xxxxxxxx+;+xx+;;+;::::::::;;;::;;:::::::::::::::::::::::::::::::::::
:::::::::::::::;+;:::;::::::::;+++;::::;++;;;:;+;;:::::::;xXXXXxxx++xxxxx++x++;;+x+;;;;;+++xxxx++++++;;;;++++xXXXxxxxxXXX$$$$$$$XXX$$$$$XX$$$$$$$$$$$$$$&$$$$$$$$$$XXXXXXXXXxxXXxx++xX$$$XXXXxxXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXx;;+xxx::++;::::::::::::::;:.:::;::::::::::::::::::::::::::::
::::::::::::::;+::::;x:::;xx;::::::::::::;;;;;:;;:::;:;;::;++;+++;;+xxXXXx+++++;+xxxxx+;;+X$XXxx++xxx+++++;;;+xXXXXxxxxxX$$$$$$XxxxXX$$XXXXX$$$$$$$$$$$$&&$$X$$$$$$XXXXXXXXXxxxxxxxx+xX$$$$XXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxXXXXxXXXXXXXXXxx+;++;;;;;;:..:::::::::::::::::::::::::::::::::::::::::
::::::::::::::.::::::+;;;;::::::::::::::::::;:::::;;:x+;;++xx;;;++++XXx+++++xXx+X$$Xx+++;+XXXxxxx++++;+x;;;;++++xx+;;:;++xXX$$$$XxxXXXXXX$$$$$$$$$$$$$$X$&&$$$$$$$$XXXXXXXXXXXXxxxxxxx+X$$$$XXXXXXXXXXXX$$XXXXXXXXXxxxXXXXXXXXXXxxx+xXx;;;;;::;;++++++++;...:::::::::::::::::::::::::::::::::::::::
:;+++;:::::::::::::++:::::::::::::::::::::::::::::+;:;;::::;::;;+;;+xxx++x+xXXXXXXXx+++;;;+x+++++;+;;;;;+++;;+;;++;+x++;:;;x$$$$$XXXXX$X$$$$$$$$$$$$$$$$$&$$$$$XXXXX$$$XXXXXXXxxxxxxxxxxXXXXXX$$$XXXXxxX$$$XXXXXxxxxXXXXXXXXXXXxx+;;;;;:::.:++xXXXxxx++++;..:::::::::::::::::::::::::::::::::;;:::;
++;:;+;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;+++;++++++xxxxxx++;;;;+++xx+++++++;;;;;;;;+;;;;+xxxxxxxx+;+X$$$XxxXX$$$$$$$$$$$$$$$$$$$$$$XXXxxXX$$$$$$XXXXXXxxxxxxxxxxXXXXX$$X$$$XX$$$$XXXxxxxxXX$$$$&&&$$$X+++;::::::.:;+xXXxxxxxx++++::;;::::::;:::::::;;;:::::::::;;:::::::..
;:;;;;::::::;;::++::::::;::::::::::::::;+;+;+;:::::::::;;+;;;;++xX+;++++;;++x+;;++++;;;+++++xxx+++++++++;;;;;++++xxxXXXXXXXx++X$XXXXXX$$$$$$$$$$$$$$$$$$X$$$XXXX$XXXXXXXXXXXXXXXXXxxxxxxxxxxXXX$$$$$$$$&&$$$$$$$$$&&&&&$XXXXXXx+++::::;:....:;;+xx+;++x+++;::+::::::::::::::::::::::;;;:::;+;;::::.
::;;;;::+;;::::::;::::;::::::::::::::::::::::::::::::::::;::;++;;::;+;::;;++x+;+x++++++++++++++++++++++;;++++++xxXXXXXX$$$XXX+x$$XXXXX$$$$$$$$$$$$$$$$$$$$&$XXX$$XXXXXXXXXXXXXXXxxxxxxxxxxxxx+++xX$$$$XXX$$$$&&$$$$$XXXx++++++;:::::::::....::;;:;;+++++++;;.:::::::;::::::::::::::::::::::::::::::
::::::::::::::::::;:;;::::;;:;;:::::::::::::::;::::;::::::::::::::;;;:::;+x++++++;;+;+++++++;;;++;;;;;+++++++++xxXXXXX$$$&&&$XX$XXXXXX$$$$$$$$$$$$$$$$$$$$$$XXX$$XXXXXXX$$$$$XXXXXxxxxxxxxxxxx++++++++x++++xxxxxx+x++++;;;:::::::;;;;;:....;;;;..:;+++xxx++;.:;++:::;;+;:::::::::::;;::::::::::::::
::::;;;+;::::::;:;;::::::::;+;;;;;;;;;::::::;;;::::;+;::::;::::::;+::;;;;+x+xx+++;;;;+++++;;;;;;;++x++++++xx++++xxXXXX$$$$$$$$&&$X$XXXX$$$$$$$$$$$$$$$$$$$$$XXX$$$XX$$$$$XXXXXXXXXXXxxxxxxxxx+++xxxx+++++++;++;;++++++++xx++++xxxxx++++;;++x+;....;;+xxx++++:+xX+;::::::::::::::::;;:::::::::::::::