X$$$$XX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$$$$$$$XXXXXXXx++xxxxx+;;++xxxxxx+xXxx++xx++++X$$$$$$$XXXXXXXXXXXXXXX
XXXXXX$$$$$XXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$XXXXX$$$$$$XXXXXX+;;+++++++++++++xxxxxXXxxxxxx++xX&&$$$$$$XXXXXXXXXXXXXXX
+++++++++xX$$XXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$XXXX$$$$$$$XXXXX;;;;;;:;++;;;;;;++xxxXxxxxxxx+xx$$$$$$$$$XXXXXXXXXXXXXXXX
+++++++++++++X$$XX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$XXXXX$$XXXXXX$X;:;:;;;::;+;;;;;++xxXXXxxxxxxxx$$$$&&$$$$$XXXXXXXXXXXXXXXX
+;;++++++++++++x$XX$$$$$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$XXXXXXXX$XXXXX$X+;::;;;;:::;+++xxxxxXXxxxxxxxX$$$$$$$$$$$$XXXXXXXXXXXXXXXX
++;;+++++++++++++$$XXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXX$XXXXXXXXXXXXXXXXXXX$XXXXXXXX$$XXXXXXXx;::;+++;;;++xxxx+xXxxxx+xX$&$$$$$$$$$$XXXXXXXXXXXXXXXXXX
.+++;;++++++++++++X$XXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$X$$X$$XXXXXXXX$XXXXXXXXXXXXXXXXXXX$$XXXXXXXXXXXXXXXXXXXx+;++++xxxx++++xXxx++xX&&&$$$$$$$$$$XXXXXXXXXXXXXXXXXX
  :++;;;+++++++++++X$$XXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXX$$XXXXXX$$$X$$XXXXXXXXXXXXXXXXXXXXXXXXXX$XXXXXXXXXXX$Xx+++++++++++xXXxxxX$&&$$$$&$$$$$XXXXXXXXXXXXXXXXXXX
   .++;;++;;++++++;+X$XXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXX$$$$XXXXXXXXXXXXXXXX$XXXXXX$$XXXXXXXXXXXXXXx++++++++;;xxXxxX&&$$$$$$&&$$$XXXXXXXXXXXXXXXXXXXX
     :++;;;;;;;;;++;+XXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$XXXXXXXXXXXXXXX+;;;;;::::+xxxx$&&$$$$$$$&$$XXXXXXXXXXXXXXXXXXXXX
       ;++;;;;;;;;+++xXXXXX$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXX$$$$XXXXXXXXXXXXXXXXXXX$$$$XXXXXXXXXXXXXXX+;:::::::;+xX$X$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXX
+:      .++++;;+++::::XXXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$XXXXXXXXXXXXXX$$$$$$$&$XXXXXXXXXXXXXXXXXXXXXXX$$$$XXXXXXXXXx;;++++;;;:;;xx+++xxX$$&&&$$$XXXXXXXXXXXXXXXXXXXXX
;+;.      .++++;::::::+XXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXX$$$$XXXXXX$$$XXXXXXXXXXXXXXXXXX$$XX$X$$XX$$XXx+;;;::::::;;;;xxxx+++++X&&&$&$$$XXXXXXXXXXXXXXXXXXX
;;++:.      .+;:::::::;XxXXXX$$$$XXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXX$$$$$$$XXX$$$XXXXXXXXXXXXXXXX$$XXXXXXXX$x;::::::::::::;;;+xxxxx++++X&&&$$$$$$$XXXXXXXXXXXXXXXXX
;;+: .:.      .;;::::::XXXXXXX$XXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$$$$$$$$XXXXXXXXXXXX$$$$$$$$$$$$$XX$$$XXXXXXXXXXXXXXX$$XXXXXXXXXx;::::::;;+++xxx++++;++xxxx$$$$$$$$$$$XXXXXXXXXXXXXXXXX
;;+;.  .:.      .;;::::+XXXXXX$XXX$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$XX$$$$$$XXXXXXXXXXX$$$XXXX$XXX$X$$$$$&$XXXX$XXXXXXXXX$$XXXXXXXXXx;;++xx+++;;;;;++xxxx+++xX$$$$$$$$$$$XXXXXXXXXXXXXXXXXX
;;+++:   .:.      .;;::;XXXXXXXXXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$$$$XXX$$$$&$X$$$$$$$$XXXXXXXXXXXXXXXXXXXxxx+;;;::::+++++++X&&&$$$$$$$$$$XXXXXXXXXXXXXXXXXXX
;+++++;.    ::      .;;;$XXXXXXXX$XXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$$$$$$$$$XXX$$XXXXXXXXXXXXXXXXXXXX$$$$$X$$XXXX$$&&&$$$Xx++;;;;+X$$XXXXXXXXXXXX$$$Xx;::::::+++++++X&&&$$$$$$$$XXXXXXXXXXXXXXXXXXXXX
;;++++xx:.    .:.      :XXXXXXXXX$XX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$$X$$$$$XXX$$$$$XX$$XXXXXXXXXX$$$$$&X++;++::::::;+x+;;::::::;;;+$$XXXXXXXXXXXXXX$x:::::::+x+++++X&&$$$$$$$$XXXXXXXXXXXXXXXXXXXXXX
+++++++:;+:      .:.     :xXXXXXXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXX$$$$$XX$$$$XXXXX$X$$X+;;;+;;++::::;x+;:::::::;;;+x+++$$$XXXXXXXXXXXXX;:;;;+++xxx+++X&$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXX
++++++:::;:.:.     ......  :x$XXXXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$$$$$$$$$$$$$$$$$$$$XXX$XXXX$XXXX$$X$X+;:;;xxxx;;x+:;x+;;::;;++++;:::::;+xX&$XXXXXXXXXXX$X+;;;+++;;+x++X&&$$$$XXXXXXXXXXXXXXXXXXXXXXXXXX
 ..::::;;;;;::;;:. ..   .:.  :X$XXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXX$$$$XXXXXX$$XXXXXXXX$$+;+Xxx+;xx:;;+x;;:;+++;;;;;xx;:;;;;;+X&$$XXXXXXXXXX$$$X+++;;+++++$&$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXX
                 ..:::     .. .+XXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$$X$$X$$$$XXXXXXXXXXXXXXXX$$$xxxxx++;x+:++;+;;+;::;x+++;+x;;;;;;;;+$$XXXXXXXXXX$$$Xx+;:;++++x$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXX
      ...             .:.       ;X$XXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+;++x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$XX$$$$$$XXXXXX$$$$$XXXXX$$$++;;++x+;+;x++;;x+::++;::;x+x+;;;;;;::;x$$XXXXXXXXX$$XXx+:;+++xX$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXX
   .:.      ..           ..      :X$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$xxxX$&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$$$$$$XX$$$$$$XXXXXX$$$$$$XX$$$x;;;;;+x++;:;XX+;xx:;+x+++;:;xx+;:;+X$$Xx++$$XXXXXXXXXXXXXX+;+xX$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    .:.                    .      :$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&X+xxx$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$XXX$$$$$$XXXXXXX$$$$$&$+;;;:;x++x++;:;;+xx$+:;x+;;;+;:;++;;;;:+X$$$$$$$$XXXXXXXXXXX$X$$$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
::::::;;:..                .:      x$$$$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XxxxxX$$xX$$$$$$$$$$$$$$$$$$$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXX$$$X+;;::;;;;;+X+x++;::;+x++;;;x;x;;x;:+x;;;;;;:;x$$$XXXXXXXXXXXXXXX$$XXXX$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
           .:;::..          :.     ;$$$$X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXx++++x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$$$$$$$$$$$$$$XXXXX$$X;;::;;;;;;+++Xx;;x;:;;x+;;;;;;xx+x;;xx::;;;+;;::x$$XXXXXXXXXXXXXXX$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.           .:              ;+;;::.:$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x;::;;+++x$$$$$$$$$$$XxxxX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXX$X;;;;;;;;xx;;;;;XXx+;;;X+;;;;;+Xx++;;x;;;;;;;;x$x;:+$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;+;;;::::::....:..         .;::::::;X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X;;;;;;++x$$$$$$$$$$+;;;;+$&$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$$$$$$XXXXXXXX$$;;;+xx++x++++++++x++++xxxxxxxxxxxxxxxxxxx++;;Xxx$$X+X$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;:;:.          ;....     ;;::::::++x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X+;;;++xX$$$$$$$$$;;;;;x$XX$$$$$$$$$$$$$$$$$$$XXX$$$$$$$$$$$$$XX$$$$$&Xxx+;;;;;;;;;;;;;;;;;;;::::::::;:::::::::;;;+xX$$$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;::;;;;;::::::;;+:   ....;:::::;+X$&$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x+++X$+;;++xx$$$$$$$$x::;;;$$x++$$$$$$$$$$$$$$$$$$$$$$$$XX$$$$$$$$$$X+;;;;;;;x+;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::;x$$$X$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;::::::;;:::::;+;:;+;....:;:::;;x&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&$X$&&$$x;+++x$$$$$$$$;:;;;+&Xx++$$$$$$$$$$$$$$$$$$$$$X$$X$$$$$$$X+;;;:::::;x+;++;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;::::::::;X$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;::::::::;;:::;;::::: ..::::;+;:;$$+;xxX&$$$$$$$$$$$$$$$$$x;:::::+X&XXXXXX$$Xx+;++xX$$$$$$$;:;;;X$x++X$$$$$$$$$$$$$$$$$$$$$XXX$$x+;;;;:::;;x$&&$+;+x;;;;;;;;;;;;;;;xxx;;;;;;;;;;;x;;;;X&$&$x;;:;::;$$XXXXX$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;:::::::;;:::;+:::::;;:;;::++;:::;x;:;:;X&$$$$$$$$$$&&$$+:::::::::::+XXXXXXxxXX++++X&$$$$$x:;;;+$Xx+x$$X;+$$$$$$$$$$$$$$$$$$$$$$$x+;;;;+x$$$$x;+xx;;++;;;;;;;;;;;+X+;+;;;;;;;;;;++:;;;;x$$$$$x;::::;x$$XXXXXXXX$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;:::::;;;;:::;;::::::::::;;..;;:::;+;;:;+X&&$&$$$&$&&$x;:::::::::::::+$X+;+xxx$+++xx$&$X$$+;;;;XXx++XX+;+X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X+++;;++;;;;;;;+++xxx+;;++;;;;;;;;;;x;;;;;;;;x$$$$$+;::::;XXXxxxxxxxX$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;;:::::;::;:::;;::::::::;;:....:;;::;;;+:;:x$&&$$$&&&$x;::::::::::::::;x+;++xxxXx+++xX$x+xx;;+;+$$x+XXx+;;X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Xx++;;;;+X$Xx+;+;;;;++;;;;;;;;;;+x;;;;;;;;;;xXXXXx;;;::;xXXXXxxxXXXX$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+;:::::;::::::;;:::::::;;:......:+;::::;+;.+x$&&&&&&$x;;;::::::::::::::+x+++xxxxX+++xx&xxxx;+++X&$xxXxx+;X&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXX$XX$$X;:;+;;+X&&$X+;;;+x;;;;;;;;;;;++;:;;;;;;;:;X$XX$X;::::;+$XXxxxxXX$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+::::::;::::::;+::::::+;.........:+:::::;;.;xxX&&&&$+;;;:::::::::::::::+x+++xxxxXx++xx&XxX+;+++$$x+XXxx+X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXX$$$$$$$$$&&&$+;;;x+;;;;;;;;;+xx+;;;;;;;;;;;+X$$X$$+:;;::;$XXxxxXXX$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+::::::;;::::::++:::;+......:;;...;;::::::;::xX+xXx:;;:::::::;::::::::;xx++++xxxxX++++$$xX++++X$X+XXxx+X&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXX$$XXXXX$$$X+;;;;;;;;x+;;;;;;+xx+;;;;;;;++x+;;::;+XxX$$$+;;;::;XXXXXXXx$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+:::::::::::;;:;+x;+;::.......;+;.;;::::::::;;;;+;:;;:::::::;;::::::::;XX++++xxxxxx+++X$Xx++;+$$xx$xx+x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXXXX$$+;;;;;;;;+x+;+;;+x+;;:;:::;;;;;;;;;+xx;;xX++x$$x;;;;+x$$Xx++x$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+::::::::::;+;::;+;::::;+;;:..:;;;;;::::::::;;;;;;:+;::::::;;;;::::::;x&$x+++xxxxxXx+xx$Xx+++X&XX$xxxX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXX$XX$$x;;;;;;;++++;;xx+x;;;;;;;;;;;;;;;;;:::;;;;;xXx++++xxxx+++++++x$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+:::::::;;;:..:+;:::;;;;:;++;::;;:::::::::::::::::;x;::::::;;;:::;::;x&&$$+++xxXXX$$$$$&&&&&$&&&&&$XX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXX$$x;;;;;;;;;;;;;xXx;;;;;;;;;;;;:::;;:;;;::::;x$$Xxxxx+++++++++xX$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+:::::::;:....;;:;++;;x+;;;+;+;;::::::::::::::::::+;;::::::::::::;;+$&$$$&$$$XXXx+++xxxXX$$$$$$&$&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXX$XXXX$X;:;;;;;;;;;;;xX+;;;;;;;;;:::;:::::;;;;;+xxX$$$$xxxXXXXXXXxxx$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.;::::::;:..;+;+++;:;:;+:::;;;;;;:::::::::::::::::;;.;;::::::::;:;+X$$$$$$X$$XXXXXXXXX$$$$&&&&&&&&&&&$X$$X$XX$$$$$$$$$$$$$$$$$$$$$$XXXXX$$XXXX$XXXX$x;:;;;;;;;;;;xx;;;;;;;;;;;;;;;+++xxXXXXxx++xX$$$$Xxxxxxxx+++++X$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.;::::::;:;;;;.;+:::;;;+;::;;:::::::::::::::::;;:;;:..:+;;;:;;;+xX$$$$$$$$$&&&$$&&&$+xxXX$$$$$$&&&&&&&&&$X$XXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$$XX$$XXXX$x;:;;;;;;;;+X$$$$$$$$$$$$$$$XxX$$X$$$$XXXXXXXX$XXXXxxx+++++++++x$$$XX$XXXX$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;::::::;+;:;:..+;::;;;:;++;;;:::::::::::::::::;;;:......:;X$$$$$$$$$$$XXXX$$XX$$&&X++xxXX$$$$$$&&&&$$X&$$XXXXX$$$$$$$$$$$$$$$$$$$$$$$$$$$$XXXXXXXX$$+;+;;;;;;X$$XXXXXXXXXXXX$$x++xxXX$$$XXxxXXXXXXXX$$xxxx++++++++++X$$XXXX$X$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
:+::::::::::;:...:+;:::;:;;+;::::::::::::::::;;;;;:.......:$&$$$$$$$$X;:::+$$XX$$+;;++xxXXX$$$$$&&&&$XX&$$$XXXX$$$$X$$$$X$$$$$$$$$$$$$$$$$$XXXXXXXXX$&$x+xxX$$$XXXXXXXXXXXX$$X++++++xX$$$$$XXx++++xXX$$x;;x$xxxx++++++X&$XXXXX$$$X$$$XXXXXXXXXXXXXXXXXXXXXXXXXXX
:;::::::::::;:.....:+;;;;::;;::::::::::::::::::;;:........;;+$$$$$$X;::::;X$XX$&&$X$$&&$XX$$$$$$$$$$&XX&$$&$XXXXXX$$XX$XX$$$$$$$$$$$$$$$X$$$$$XXXXXX$$$$&$$XXXXXXXXXXXXXXX$$X+++++xxxxx$$$X$$$XXx++xXx;::::+x;;+;;xxx++x$$$X$$$$$X$$XXXXXXXXXXXXXXXXXXXXXXXXXXXX
:;::::::::::;;.....:+;....:+;::;:::::::::::::::;;........:+:+X$$$X+::::;xXXXX$&&&&&&XXX$$$$$&&$$X$$$$XX$$$$XXXXXXXXXXXXXX$$$$$$$$$$$$$$$XXXXXXX$XXXX$$XX$$$XXXXXXXXXXXXXX$$x+++++++++xXXXXxX$$X$$Xx;::::;;:;;x++x;++xx++x$$$$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.;:::::::::::;;.....;x;....:+;::::::::::::::::;+:........+xX$&$$X+::::;X$$X$&$$$$$$$x+xXX$$$$$$$&&&&&$$$$$XXXXX$$$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$XXXX$$Xx+xx++++++++xxXXXX$X+;;::::;;++;:;;+;+x;x+xX++x$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.;::::::::::::;;....:+++;:..:X+;:::::::::;;::;+:........;X$$XX$X;::::;xX$$&&&$$+;+x+;+xxXXXXXXXX$$$$$$$&&$$$$$$$$$$$$$X$$&&&&&&&&&&&&&&&&&$$$$$$$$$$$&&&$&&&$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$$$XXXX$X$XXxxxxxXXxx+XXxxX$$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.;:::::::::::::;;;:..:+++XX+:x$x;::::::::::::+:........;x$x+x$$+::::;+;;+$$$XXX+;;;;++xX$$$$$&&&&$$$$$$$$$$$$$$$$$XX$XXX$&&&&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$XXXXXX
.;::::::::::::::::;;;;;++XXXXXX$x;::::::::::;:........;XXX;;+Xx;::;;++;::xX$$$$$$&&&&&$$$$$$$$$$$$$$X$$$$$$$$$$$XXXXXXXXX&&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$&&$$$$$$$$$$$$$$$$$$$$$$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:;::::::::::::::::::::;;;XXXXXXX$x;:::;::::;;.......:+X$$$$XXx;::;;;::;+;x$$$$$$$$$$$$$$$$$$$$$$$$X$$XXXX$XXXXXXXXXXXXXXX&&&&&&&&&&&&&&&$$$$$$$$$$$&&$$&&$$$$&&&$$&$&&&$$$$$$$$$$$$$$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:;:::::::::::::::::::;;;;xXXXXXXXXx;::::::;;:.....:+X&&&&&$$X;::;;;::::++;+$$$$$$$$$$$$$$$X$XXXXXXXXXXXXXXXXXXXXXXXXXX$$$&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:;:::::::::::::::::::;;;;xXXXXXXX$X;+;;::;;....:;x$$$$$$$$$X;::;;;;:::;+;:;X$$$$$$$$XXXXXXXXX$$$$$$$$$$$$$X$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:;:::::::::::::::::;++xxX$$$$$$$&&$;;;+++:..:;xX$$$$$$$$$$$+::::;;;::;+;::;xX$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&&&&&$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$&$$$$&&&$$$$$$$$$$$&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:;:::::::::::::::::;X$XXXXXXXX$&&&&&&Xx+;:+$$$$X$XX$$$$$$$X;:::::;;+++;::;+:+$&&&&&&&&&&&&&&&&&&&&$&$$$$XX$$$X$XXXXXXXX$$&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$&&&$$$&&&$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
:;:::::::::::::::::;X$X$XXX$$$X+;;;X&&&&&xx&&&$$$$$$$$$$$$X;:::::::;++;;+;:;X&&&&&&$$$&&$$$$$$$$$$$X$XXXXXX$$$$XXXXX$$$$$&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&$&&&&&&&&&&
:;:::::::::::::::::;X$XXX$$$X;:::::;$&&&&&&&&&&&&&&&&&&&&&&+:::::::;;+;;::;X&$$$$$$$$$$$$$$XXXXXXXX$$XXX$XX$$$XXXXXX$$$$$$&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&$&&
:;:::::::::::::::::;xXXXX$$x:::::::;$&&&&&&&&&&&&&$$$$$$$$$x;:::;;;;;++;+X$$X$XX$$$$$$$$$$$$$$XXXXXX$$$XXXXX$$$$X$$&&$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&
:;:::::::::::::::::;x$&&&&x;:::::::+&&&&&&&&&&&&&$$$$$$$$$X+;;;::::::::;x$$XX$$$$$$$$$$$$$$$&$&&&&&&&&&&&&&&&&&&$$$&&$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$$&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$&&&&&
:+:::::::::::::::::::+$&$x;:::::::+&&&&&&&&&&&&&&&$$$$$$$x;:;;;:::::;;;X&&&&&&&&&&&&$$$&&&&&&$$$XXXXXXXXXXXX$$$$$$$X&$&$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
:;::::::::::::::::::::$&x;:::::;:+&&&&&&&&&&&&&&&&&&&$$x;;::;;;;+;;;+xX$$$$$$$XX$$X&$&$&$X$XXXXXXXXXXXXXXXXXXXXX$$$X&$$$$$&&&&&&&&&&&&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&$&&&&&&$$$$$$$$&&&&&&&$$$&$$$$&&&&&&&&&$$$&&$&&&&&&&&&&&&&&$$&&&$&&$$$&&&&&&&&&&&&&
:+:::::::;;;;;;;;;;;;;$X;:::::::;$&&&&&&&&&&&&&&&&&$X+;;:;;;;;;x$XXXXXXXxxxxxxXX$&X&$$$&$X$XxxxXXXXXXXXXXXXXXXX$$$$$&$$$$$&&&&&&&&&&&&&$$&&$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&$$$&&&&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&$$$&&$&$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&
:x++++++++++++++++++++X+::;;;;;;$&&&&&&&&&&&&&&&&&&x:::::;;;;+XXxxxxxxxxxxxxxX$X$&X&$$$&$XXXxxxXXXXXXXXXXXXXX$$$$$$$&$$$$$&&&&&&&&&&&&&$$$&&$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&$$$&&$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&$$$&&$&$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&
:x+;;;;;;;;;;;;;;;;;;++;:;;;;;;x&&&&&&&&&&&&&&&&&&&$;;;;;;;;xXXxxxxxxxxxxxxxX$XX$&X&&$$&$XXXXXXXXXXXXXXXXXXX$$$$$$$$&$$$$$&&&&&&&&&&&&&$$$$$&$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&$$$&&$&$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&$$$$$$&$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&
:x++++++++;;;;;;;;;;++;:;;;;;;+&&&&&&&&&&&&&&&&&&&&&+;;;;;x$XxxxxxxxxxxxxxxX$XXX$&$&$&&&$XXxXxxXXXXXXXXXXX$$$$$$$$$$&$$$$$&&&&&&&&&&&&&$$$$&$&&$$$$$$$$$$$$$$$$$$&&&&&&&$&&$$$&&$&$$$$$$$$$$$$$$$$$$$$$$$$$&&&$$&&&&$$$$$&$$$X$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&
;x++++++++++++++++++++;;;;;;;;X&&&&&&&&&&&&&&&&&&&&&x;;+X$XXXXxXxxxxxxxxxX$$XXXX$&&&&&&&$XXxxXXXXXXXXXXXX$$$$$$$$&$X&$$$$$&&&&&&&&&&&&&$$$$$$$&&$$$$$$$$$$$$$$$$&&&&&&&&&&&$$$&&$&$$$$$$$$$$$$$$$$$$$$$$$$&&$$$$&&&&$$$$$&$$$X$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&
xXx+++++++++++++++++++;;;;;;;x&&&&&&&&&&&&&&&&&&&&&&$X$&$$XxxXXXxxxxxxxxX$$$XXX$$&&&$&&&&XXxxXXXXXXXXXXX$$$$$$$$$&$$&$&$$$&&&&&&&&&&&&&$$$$$$&&&&&$$$$$$$$$$$$&&&&&&&&&&&&&$$$&&&&$$$$$$$$$$$$$$$$$$$$$$$&&&&$$$&&&&$$$$&&&$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&
xXX+++++++++++++++++x+;;;;;;+$&&&&&&&&&&&&&&&&&&&&&&&&&&$$XXXXXXXXXXXXX$$$$$$$$$$&&&$$&&&$XXXXXXXXXXXX$$$$$$$$$$$&$$&$$$$&&&&&&&&&&&&&&&&$$$$$&&&&&&&&$$$$$$$&&&&&&&&&&&&&&$$$&&&&$$$&&$$$$$&&$$$$$$$$$$&&&&&&$$&&&&$$$$&&$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&&&&&