::..::::H%%%%@@%%%%HHHHH@@HHHHMHHHHXXHHHH%@@@@@@@%%%H%%%%HHHHHHHHHHHHH@HHHHHH%%%%H%%%%%%HHHH%XXXXHH%%%%%%%%%@@XXXX%@@@@%%HHHH%$$$$$::,,,,,,HHHH%:::%%%%%%%+    ,,----:$$$$::%%%%H%%%%%%%%%%$%%%%$$%%%%%%
::..::::H%%%%@@%%%%HHHHH@@HHHHMHHHHXXHHHH%@@@@@@@%%%H%%%%HHHHHHHHHHHHH@HHHHHH%%%%H%%%%%%HHHH%XXXXHH%%%%%%%%%@@XXXX%@@@@%%HHHH%$$$$$::,,,,,,HHHH%:::%%%%%%%+    ,,----:$$$$::%%%%H%%%%%%%%%%$%%%%$$%%%%%%
::..::::H%%%%@@%%%%HHHHH@@HHHHMHHHHXXHHHH%@@@@@@@%%%H%%%%HHHHHHHHHHHHH@HHHHHH%%%%H%%%%%%HHHH%XXXXHH%%%%%%%%%@@XXXX%@@@@%%HHHH%$$$$$::,,,,,,HHHH%:::%%%%%%%+    ,,----:$$$$::%%%%H%%%%%%%%%%$%%%%$$%%%%%%
##HH%%%%%%%%%%%####$HHHHHH%%%%%XXXX%%%%%%HHHHH%%%@@@HHHHH%%%HHHHHH%%%%HHHHHHHHHHH%HHHH$$%%%%H%%%%%%$$$$X%%%%%%HHHH%HHHHXX::::XHHHHH%%:::,,,,,,,%$$$%%%,,,,       ,,,, ;;;;::$$$$:::::%%$$$$:%%%%::$$$$::
##HH%%%%%%%%%%%####$HHHHHH%%%%%XXXX%%%%%%HHHHH%%%@@@HHHHH%%%HHHHHH%%%%HHHHHHHHHHH%HHHH$$%%%%H%%%%%%$$$$X%%%%%%HHHH%HHHHXX::::XHHHHH%%:::,,,,,,,%$$$%%%,,,,       ,,,, ;;;;::$$$$:::::%%$$$$:%%%%::$$$$::
%%MMHHHH;::::HH%%%%:HHHH%%HHHHX%%%%HHHHHHHHHHHHHH:::%HHHHXXX%%%HHHHHHHHHHHH%%HHHHHXXXX%%::::%%%%%%%%%%%HXXXX::$$$$X%%%%HHXXXX%HHHHH%%$$$%%%%%%%:;;;:::%%%%:,,,,      .,,,,;;,,,,;::::$$::::%::::%%%%%%$$
%%MMHHHH;::::HH%%%%:HHHH%%HHHHX%%%%HHHHHHHHHHHHHH:::%HHHHXXX%%%HHHHHHHHHHHH%%HHHHHXXXX%%::::%%%%%%%%%%%HXXXX::$$$$X%%%%HHXXXX%HHHHH%%$$$%%%%%%%:;;;:::%%%%:,,,,      .,,,,;;,,,,;::::$$::::%::::%%%%%%$$
%%MMHHHH;::::HH%%%%:HHHH%%HHHHX%%%%HHHHHHHHHHHHHH:::%HHHHXXX%%%HHHHHHHHHHHH%%HHHHHXXXX%%::::%%%%%%%%%%%HXXXX::$$$$X%%%%HHXXXX%HHHHH%%$$$%%%%%%%:;;;:::%%%%:,,,,      .,,,,;;,,,,;::::$$::::%::::%%%%%%$$
%%MMHHHH;::::HH%%%%:HHHH%%HHHHX%%%%HHHHHHHHHHHHHH:::%HHHHXXX%%%HHHHHHHHHHHH%%HHHHHXXXX%%::::%%%%%%%%%%%HXXXX::$$$$X%%%%HHXXXX%HHHHH%%$$$%%%%%%%:;;;:::%%%%:,,,,      .,,,,;;,,,,;::::$$::::%::::%%%%%%$$
;;%%@@@@H    ::,,,,#%%%%HHHHHHHHHHH%%HHHH%:::::::%%%XHHHHHHHHHH%%%HHHH%HHHHHH%%%%XHHHH%%%%%%HHHHH%%HHHH%%%%%::%%%%%HHHHHH%%%%%$$$$$%%XXX%%%::::%%%%%%%::::%,,,,:::::::::::,,,,,,:%%%%,,%%%%:::::::%%%%%%
::;;::::HMMMM::++++HXXXX,,HHHHHHHHHHH%%%%M%%%%@@@@@@%%%%%@@@HHH%%%HHHHH@@@@%%HHHHHHHHH%%HHHH%%%%%XXHHHH%%%%%::XXXXHHHHH%%HHHH@%%%%%:::::%%%HHHH%:::$$$%%%%%::::  ::::,      %%%%:,,,,--     ====%%%%%%::
::;;::::HMMMM::++++HXXXX,,HHHHHHHHHHH%%%%M%%%%@@@@@@%%%%%@@@HHH%%%HHHHH@@@@%%HHHHHHHHH%%HHHH%%%%%XXHHHH%%%%%::XXXXHHHHH%%HHHH@%%%%%:::::%%%HHHH%:::$$$%%%%%::::  ::::,      %%%%:,,,,--     ====%%%%%%::
$$%%%%%%%HHHHMMMMMMH::::,,MMMM%%%%%XX%%%%HHHHHHHHHHHH@@@@%%%@@@%%%XXXXH%%%%HH%%%%X%%%%XX%%%%:HHHH%%%%%%HHHHHXX%%%%$%%%%XX::::$%%%%%::%%%%%%%%%%%HHH%%%:::::,,,,,,,,,,       :::::,,,,           ,,%%%%$$
$$%%%%%%%HHHHMMMMMMH::::,,MMMM%%%%%XX%%%%HHHHHHHHHHHH@@@@%%%@@@%%%XXXXH%%%%HH%%%%X%%%%XX%%%%:HHHH%%%%%%HHHHHXX%%%%$%%%%XX::::$%%%%%::%%%%%%%%%%%HHH%%%:::::,,,,,,,,,,       :::::,,,,           ,,%%%%$$
$$%%%%%%%HHHHMMMMMMH::::,,MMMM%%%%%XX%%%%HHHHHHHHHHHH@@@@%%%@@@%%%XXXXH%%%%HH%%%%X%%%%XX%%%%:HHHH%%%%%%HHHHHXX%%%%$%%%%XX::::$%%%%%::%%%%%%%%%%%HHH%%%:::::,,,,,,,,,,       :::::,,,,           ,,%%%%$$
$$%%%%%%%HHHHMMMMMMH::::,,MMMM%%%%%XX%%%%HHHHHHHHHHHH@@@@%%%@@@%%%XXXXH%%%%HH%%%%X%%%%XX%%%%:HHHH%%%%%%HHHHHXX%%%%$%%%%XX::::$%%%%%::%%%%%%%%%%%HHH%%%:::::,,,,,,,,,,       :::::,,,,           ,,%%%%$$
%%,,XXXXX;;;;,,%%%%H@@@@@@HHHHH@@@@HHHHHHHHHHH%%%%%%H%%%%HHH%%%MMM::::HHHHH%%HHHH%XXXX%%HHHH$%%%%HHHHHH%XXXX%%%%%%%%%%%$$$$$$:%%%%%HH%%%%%%$$$$%%%%%%%%%%%:          ,,,,,,,,,,,,::::,,         ::%%%%::
%%,,XXXXX;;;;,,%%%%H@@@@@@HHHHH@@@@HHHHHHHHHHH%%%%%%H%%%%HHH%%%MMM::::HHHHH%%HHHH%XXXX%%HHHH$%%%%HHHHHH%XXXX%%%%%%%%%%%$$$$$$:%%%%%HH%%%%%%$$$$%%%%%%%%%%%:          ,,,,,,,,,,,,::::,,         ::%%%%::
;;::::::,    %%@@@@%HHHH@@XXXXHHHHH@@%%%%H%%%%@@@XXX%$$$$%%%@@@%%%@@@@%HHHHHH%%%%X%%%%HH%%%%H@@@@%%HHHHXHHHHHH%%%%H%%%%$$%%%%:$$$$$%%%%%%%%++++%%%%%%%::::+%%%%::----            ::::  ,,,,,,,,,::::::%%
::::++++,      ::::H::::%%%%%%X%%%%%%HHHHHHHHHHHHHHHHHHHHHHH%%%:::%%%%H%%%%XXHHHHH%%%%XXHHHHXHHHH%%XXXXHHHHH%%::::%$$$$%%::::$%%%%%%%:::,,,,,,,H%%%:::$$$$%::::%%:::::::::      ,,,,,::,,,,=::::::++++::
::::++++,      ::::H::::%%%%%%X%%%%%%HHHHHHHHHHHHHHHHHHHHHHH%%%:::%%%%H%%%%XXHHHHH%%%%XXHHHHXHHHH%%XXXXHHHHH%%::::%$$$$%%::::$%%%%%%%:::,,,,,,,H%%%:::$$$$%::::%%:::::::::      ,,,,,::,,,,=::::::++++::
::::++++,      ::::H::::%%%%%%X%%%%%%HHHHHHHHHHHHHHHHHHHHHHH%%%:::%%%%H%%%%XXHHHHH%%%%XXHHHHXHHHH%%XXXXHHHHH%%::::%$$$$%%::::$%%%%%%%:::,,,,,,,H%%%:::$$$$%::::%%:::::::::      ,,,,,::,,,,=::::::++++::
::::++++,      ::::H::::%%%%%%X%%%%%%HHHHHHHHHHHHHHHHHHHHHHH%%%:::%%%%H%%%%XXHHHHH%%%%XXHHHHXHHHH%%XXXXHHHHH%%::::%$$$$%%::::$%%%%%%%:::,,,,,,,H%%%:::$$$$%::::%%:::::::::      ,,,,,::,,,,=::::::++++::
%%%%HHHHH%%%%%%$$$$%XXXXHHHHHH%HHHHHHHHHH%@@@@%%%HHH%HHHHHHH%%%HHH%%%%HXXXX%%XXXX%HHHH%%%%%%%XXXXHH%%%%%%%%%HHXXXX%%%%%%%$$$$%HHHHH:::::   ::::%$$$:::%%%%$%%%%::$$$$%::::%%,,,,::::::::::::::::::%%%%%%
%%%%HHHHH%%%%%%$$$$%XXXXHHHHHH%HHHHHHHHHH%@@@@%%%HHH%HHHHHHH%%%HHH%%%%HXXXX%%XXXX%HHHH%%%%%%%XXXXHH%%%%%%%%%HHXXXX%%%%%%%$$$$%HHHHH:::::   ::::%$$$:::%%%%$%%%%::$$$$%::::%%,,,,::::::::::::::::::%%%%%%
%%%%HHHHH%%%%%%$$$$%XXXXHHHHHH%HHHHHHHHHH%@@@@%%%HHH%HHHHHHH%%%HHH%%%%HXXXX%%XXXX%HHHH%%%%%%%XXXXHH%%%%%%%%%HHXXXX%%%%%%%$$$$%HHHHH:::::   ::::%$$$:::%%%%$%%%%::$$$$%::::%%,,,,::::::::::::::::::%%%%%%
$$%%XXXX:%%%%%%$$$$%XXXX%%HHHH@HHHH%%%%%%H%%%%HHH%%%@HHHH%%%%%%:::HHHHHHHHH$$%%%%%%%%%HHHHHHXHHHHXX%%%%HHHHH%%:::::%%%%%%%%%%%@@@@@%%,,,%%%%%%%%%%%%%%%%%%,%%%%$$::::%%%%%$$::::$$$$$%%%%%%+::::%%::::%%
%%%%@@@@%HHHH%%%%%%XHHHHHH%%%% @@@@XX%%%%@%%%%HHH%%%%@@@@%%%%%%%%%HHHHH%%%%%%HHHHH%%%%%%HHHHH%%%%%%XXXXH%%%%HH%%%%%%%%%HH::::%%%%%%::$$$%%%;;;;%:::XXX$$$$+%%%%::%%%%:%%%%::    X%%%%++%%%%:%%%%++%%%%%%
%%%%@@@@%HHHH%%%%%%XHHHHHH%%%% @@@@XX%%%%@%%%%HHH%%%%@@@@%%%%%%%%%HHHHH%%%%%%HHHHH%%%%%%HHHHH%%%%%%XXXXH%%%%HH%%%%%%%%%HH::::%%%%%%::$$$%%%;;;;%:::XXX$$$$+%%%%::%%%%:%%%%::    X%%%%++%%%%:%%%%++%%%%%%
%%%%@@@@%HHHH%%%%%%XHHHHHH%%%% @@@@XX%%%%@%%%%HHH%%%%@@@@%%%%%%%%%HHHHH%%%%%%HHHHH%%%%%%HHHHH%%%%%%XXXXH%%%%HH%%%%%%%%%HH::::%%%%%%::$$$%%%;;;;%:::XXX$$$$+%%%%::%%%%:%%%%::    X%%%%++%%%%:%%%%++%%%%%%
%%%%@@@@%HHHH%%%%%%XHHHHHH%%%% @@@@XX%%%%@%%%%HHH%%%%@@@@%%%%%%%%%HHHHH%%%%%%HHHHH%%%%%%HHHHH%%%%%%XXXXH%%%%HH%%%%%%%%%HH::::%%%%%%::$$$%%%;;;;%:::XXX$$$$+%%%%::%%%%:%%%%::    X%%%%++%%%%:%%%%++%%%%%%
%%%%@@@@%HHHH%%%%%%XHHHHHH%%%% @@@@XX%%%%@%%%%HHH%%%%@@@@%%%%%%%%%HHHHH%%%%%%HHHHH%%%%%%HHHHH%%%%%%XXXXH%%%%HH%%%%%%%%%HH::::%%%%%%::$$$%%%;;;;%:::XXX$$$$+%%%%::%%%%:%%%%::    X%%%%++%%%%:%%%%++%%%%%%
%%%%%%%%H@@@@::XXXX%%%%%@@%%%% HHHH::$$$$%HHHHHHHHHH%%%%%HHHXXX%%%%%%%%%%%%HHXXXX%@@@@HH%%%%X$$$$%%HHHH%XXXX%%XXXX%XXXX%%    ,:::::@@:::$$$%%%%%%%%%%%%%%%:::::,,::::%$$$$%%%%%%%%%%%%%::::%%%%%%%%%%%%%
HHHH%%%%%%%%%%%@@@@%HHHH%%++++-,,,,%%%%%%%HHHH%%%HHH%HHHH%%%HHH%%%%%%%$%%%%%%$$$$%HHHH%%%%%%XHHHHXX%%%%H%%%%XX%%%%%HHHH%%%%%%%%%%%%@@%%%:::%%%%$:::$$$%%%%%%%%%::,,,,%HHHHXX%%%%$::::$$%%%%%%%%%%%::::%%
HHHH%%%%%%%%%%%@@@@%HHHH%%++++-,,,,%%%%%%%HHHH%%%HHH%HHHH%%%HHH%%%%%%%$%%%%%%$$$$%HHHH%%%%%%XHHHHXX%%%%H%%%%XX%%%%%HHHH%%%%%%%%%%%%@@%%%:::%%%%$:::$$$%%%%%%%%%::,,,,%HHHHXX%%%%$::::$$%%%%%%%%%%%::::%%
%%%%%%%%H@@@@HHXXXXHHHHH::;;;;HHHHH%%%%%%%%%%%%%%HHHH%%%%$$$%%%%%%XXXX%%%%%XX%%%%%%%%%%%XXXX%XXXX%%%%%%%$$$$%%$$$$:%%%%%%HHHH%%%%%%::%%%%%%::::%%%%%%%$$$$:$$$$XX%%%%%%%%%%%$$$$%====::::::%%%%%::%%%%%%
%%%%%%%%H@@@@HHXXXXHHHHH::;;;;HHHHH%%%%%%%%%%%%%%HHHH%%%%$$$%%%%%%XXXX%%%%%XX%%%%%%%%%%%XXXX%XXXX%%%%%%%$$$$%%$$$$:%%%%%%HHHH%%%%%%::%%%%%%::::%%%%%%%$$$$:$$$$XX%%%%%%%%%%%$$$$%====::::::%%%%%::%%%%%%
%%%%%%%%H@@@@HHXXXXHHHHH::;;;;HHHHH%%%%%%%%%%%%%%HHHH%%%%$$$%%%%%%XXXX%%%%%XX%%%%%%%%%%%XXXX%XXXX%%%%%%%$$$$%%$$$$:%%%%%%HHHH%%%%%%::%%%%%%::::%%%%%%%$$$$:$$$$XX%%%%%%%%%%%$$$$%====::::::%%%%%::%%%%%%
%%%%%%%%H@@@@HHXXXXHHHHH::;;;;HHHHH%%%%%%%%%%%%%%HHHH%%%%$$$%%%%%%XXXX%%%%%XX%%%%%%%%%%%XXXX%XXXX%%%%%%%$$$$%%$$$$:%%%%%%HHHH%%%%%%::%%%%%%::::%%%%%%%$$$$:$$$$XX%%%%%%%%%%%$$$$%====::::::%%%%%::%%%%%%
%%$$HHHH%::::XXHHHHH%%%%  HHHHH%%%%HHHHHH%%%%%$$$HHH%$$$$%%%%%%%%%HHHHH%%%%%%XXXX%%%%%XX%%%%%%%%%%%%%%%X%%%%$$::::%$$$$%%%%%%%$$$$$%%,,,,,,XXXX%%%%%%%%%%%%%%%%%%++++%%%%%::$$$$:::::,,++++%::::%%%%%%$$
%%%%HHHH%::::++%%%%+%%%%%%%%%%H%%%%HH%%%%HXXXX%%%$$$H%%%%%%%:::$$$%%%%%%%%%$$%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%::++++%$$$$$$%%%%$%%%%%%%,,,   ::::%XXX%%%%%%%%$$$$%%%%%%:%%%%%%+++++%%%%%%%%%%:;;;;::$$$$::
%%%%HHHH%::::++%%%%+%%%%%%%%%%H%%%%HH%%%%HXXXX%%%$$$H%%%%%%%:::$$$%%%%%%%%%$$%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%::++++%$$$$$$%%%%$%%%%%%%,,,   ::::%XXX%%%%%%%%$$$$%%%%%%:%%%%%%+++++%%%%%%%%%%:;;;;::$$$$::
::::%%%%%%%%%::$$$$,,,,,$$::::,%%%%XX%%%%XHHHH%%%%%%H%%%%+++%%%%%%%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++::::%::::%%XXXX%%%%%%::;;;+++++++H%%%XXX%%%%%%%%%::++++%::::$$::::+%%%%++%%%%%%%%%%%::::%%
::::%%%%%%%%%::$$$$,,,,,$$::::,%%%%XX%%%%XHHHH%%%%%%H%%%%+++%%%%%%%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++::::%::::%%XXXX%%%%%%::;;;+++++++H%%%XXX%%%%%%%%%::++++%::::$$::::+%%%%++%%%%%%%%%%%::::%%
::::%%%%%%%%%::$$$$,,,,,$$::::,%%%%XX%%%%XHHHH%%%%%%H%%%%+++%%%%%%%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++::::%::::%%XXXX%%%%%%::;;;+++++++H%%%XXX%%%%%%%%%::++++%::::$$::::+%%%%++%%%%%%%%%%%::::%%
::::%%%%%%%%%::$$$$,,,,,$$::::,%%%%XX%%%%XHHHH%%%%%%H%%%%+++%%%%%%%%%%$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++::::%::::%%XXXX%%%%%%::;;;+++++++H%%%XXX%%%%%%%%%::++++%::::$$::::+%%%%++%%%%%%%%%%%::::%%
::HH%%%%H@@@@HH,,,,,::::HH::::H%%%%@@HHHH:%%%%%%%%%%XHHHH%%%%%%$$$XXXX:%%%%XX%%%%H%%%%%%::::+::::$$%%%%$%%%%,,,,,,+%%%%%%%%%%%%%%%%$$%%%:::%%%%%%%%:::%%%%:%%%%%%%%%%;::::++:::::::::%%::::$,,,,++%%%%%%
::HH%%%%H@@@@HH,,,,,::::HH::::H%%%%@@HHHH:%%%%%%%%%%XHHHH%%%%%%$$$XXXX:%%%%XX%%%%H%%%%%%::::+::::$$%%%%$%%%%,,,,,,+%%%%%%%%%%%%%%%%$$%%%:::%%%%%%%%:::%%%%:%%%%%%%%%%;::::++:::::::::%%::::$,,,,++%%%%%%
::HH%%%%H@@@@HH,,,,,::::HH::::H%%%%@@HHHH:%%%%%%%%%%XHHHH%%%%%%$$$XXXX:%%%%XX%%%%H%%%%%%::::+::::$$%%%%$%%%%,,,,,,+%%%%%%%%%%%%%%%%$$%%%:::%%%%%%%%:::%%%%:%%%%%%%%%%;::::++:::::::::%%::::$,,,,++%%%%%%
%%%%HHHH$%%%%:::::::@@@@HHHHHH%XXXX%%%%%%H%%%%$$$%%%$%%%%%%%%%%$$$%%%%%%%%%%%HHHH%%%%%$$%%%%:%%%%::$$$$%%%%%::    ,++++::$$$$H%%%%%%%:::,,,%%%%%:::%%%::::%%%%%XX,,,,%::::::%%%%+::::%%++++%$$$$%%%%%%::
%%%%HHHH$%%%%:::::::@@@@HHHHHH%XXXX%%%%%%H%%%%$$$%%%$%%%%%%%%%%$$$%%%%%%%%%%%HHHH%%%%%$$%%%%:%%%%::$$$$%%%%%::    ,++++::$$$$H%%%%%%%:::,,,%%%%%:::%%%::::%%%%%XX,,,,%::::::%%%%+::::%%++++%$$$$%%%%%%::
%%%%HHHH$%%%%:::::::@@@@HHHHHH%XXXX%%%%%%H%%%%$$$%%%$%%%%%%%%%%$$$%%%%%%%%%%%HHHH%%%%%$$%%%%:%%%%::$$$$%%%%%::    ,++++::$$$$H%%%%%%%:::,,,%%%%%:::%%%::::%%%%%XX,,,,%::::::%%%%+::::%%++++%$$$$%%%%%%::
$$:::::::@@@@%%$$$$%HHHH%%HHHH%$$$$::XXXX:%%%%%%%+++%%%%%%%%$$$:::%%%%$$$$$%%$$$$$%%%%%%%%%%%::::++%%%%%%%%%%%%%%%%%%%%++    :%%%%%,,:::===,,,,=:::+++%%%%%%%%%++;;;;:    ==::::%%%%%%%%%%%:,,,,,,$$$$%%
::%%$$$$%%%%%HH%%%%H%%%%%%%%%%=::::XX%%%%:++++%%%%%%%$$$$%%%%%%+++%%%%%%%%%%%%%%%%%%%%$$::::$$$$$%%%%%%%%%%%::    :::::::%%%%%%%%%%::::::::====:;;;:::++++%++++:::::::;;;;,,    :::::::::::;::::%%::::%%
::%%$$$$%%%%%HH%%%%H%%%%%%%%%%=::::XX%%%%:++++%%%%%%%$$$$%%%%%%+++%%%%%%%%%%%%%%%%%%%%$$::::$$$$$%%%%%%%%%%%::    :::::::%%%%%%%%%%::::::::====:;;;:::++++%++++:::::::;;;;,,    :::::::::::;::::%%::::%%
::%%$$$$%%%%%HH%%%%H%%%%%%%%%%=::::XX%%%%:++++%%%%%%%$$$$%%%%%%+++%%%%%%%%%%%%%%%%%%%%$$::::$$$$$%%%%%%%%%%%::    :::::::%%%%%%%%%%::::::::====:;;;:::++++%++++:::::::;;;;,,    :::::::::::;::::%%::::%%
%%::%%%%X%%%%HH%%%%%XXXX%%%%%%%%%%%%%%%%%%%%%%$$$$$$%%%%%%%%;;;:::::::%%%%%$$$$$$:::::%%$$$$$::::%%%%%%$%%%%::HHHH$::::%%::::%+++++,,;;;;;;:::::::::::::::;::::::++++:::::%%::::,++++::;;;;:    ::%%%%::
%%::%%%%X%%%%HH%%%%%XXXX%%%%%%%%%%%%%%%%%%%%%%$$$$$$%%%%%%%%;;;:::::::%%%%%$$$$$$:::::%%$$$$$::::%%%%%%$%%%%::HHHH$::::%%::::%+++++,,;;;;;;:::::::::::::::;::::::++++:::::%%::::,++++::;;;;:    ::%%%%::
%%::%%%%X%%%%HH%%%%%XXXX%%%%%%%%%%%%%%%%%%%%%%$$$$$$%%%%%%%%;;;:::::::%%%%%$$$$$$:::::%%$$$$$::::%%%%%%$%%%%::HHHH$::::%%::::%+++++,,;;;;;;:::::::::::::::;::::::++++:::::%%::::,++++::;;;;:    ::%%%%::
%%%%XXXX%HHHH%%%%%%H%%%%$$%%%%%%%%%$$++++%%%%%$$$:::=::::%%%%%%%%%$$$$$%%%%%%%%%%%$$$$$$$$$$:$$$$%%$$$$:%%%%::$$$$:++++::++++%:::::,,,,,       ,::::::;;;;:::::++::::::::::::::::%%%%++:::::;;;;,,%%%%%%
%%%%XXXX%HHHH%%%%%%H%%%%$$%%%%%%%%%$$++++%%%%%$$$:::=::::%%%%%%%%%$$$$$%%%%%%%%%%%$$$$$$$$$$:$$$$%%$$$$:%%%%::$$$$:++++::++++%:::::,,,,,       ,::::::;;;;:::::++::::::::::::::::%%%%++:::::;;;;,,%%%%%%
%%%%XXXX%HHHH%%%%%%H%%%%$$%%%%%%%%%$$++++%%%%%$$$:::=::::%%%%%%%%%$$$$$%%%%%%%%%%%$$$$$$$$$$:$$$$%%$$$$:%%%%::$$$$:++++::++++%:::::,,,,,       ,::::::;;;;:::::++::::::::::::::::%%%%++:::::;;;;,,%%%%%%
$$%%%%%%H%%%%%%XXXX%%%%%$$%%%%%$$$$::%%%%%$$$$:::%%%:%%%%%%%%%%$$$%%%%%%%%%$$%%%%%%%%%$$::::%::::++::::$%%%%,,    :::::%%::::,,,,,,             :::;;;++++:,,,,,,:::::::::::::::;,,,,:::::::,,,,,,%%%%::
%%%%HHHH%%%%%XX%%%%%$$$$%%%%%%%%%%%$$::::%%%%%$$$%%%:%%%%$$$%%%%%%$$$$%$$$$%%%%%%%%%%%%%%%%%:%%%%%%%%%%%%%%%:::::: ....%%:::::=====             ::::::;;;;:    ..::::=,,,,:::::::::::::;;;;,::::::::::%%
%%%%HHHH%%%%%XX%%%%%$$$$%%%%%%%%%%%$$::::%%%%%$$$%%%:%%%%$$$%%%%%%$$$$%$$$$%%%%%%%%%%%%%%%%%:%%%%%%%%%%%%%%%:::::: ....%%:::::=====             ::::::;;;;:    ..::::=,,,,:::::::::::::;;;;,::::::::::%%
%%%%HHHH%%%%%XX%%%%%$$$$%%%%%%%%%%%$$::::%%%%%$$$%%%:%%%%$$$%%%%%%$$$$%$$$$%%%%%%%%%%%%%%%%%:%%%%%%%%%%%%%%%:::::: ....%%:::::=====             ::::::;;;;:    ..::::=,,,,:::::::::::::;;;;,::::::::::%%
%%%%HHHH%%%%%XX%%%%%$$$$%%%%%%%%%%%$$::::%%%%%$$$%%%:%%%%$$$%%%%%%$$$$%$$$$%%%%%%%%%%%%%%%%%:%%%%%%%%%%%%%%%:::::: ....%%:::::=====             ::::::;;;;:    ..::::=,,,,:::::::::::::;;;;,::::::::::%%
$$$$%%%%$%%%%%%%%%%$%%%%::%%%%:%%%%%%%%%%$%%%%%%%$$$%$$$$%%%%%%%%%%%%%%%%%%$$%%%%%++++%%::::%%%%%::$$$$%%%%%%%%%%%%,,,,::::::::::::,,           :::,,,:::::    ::,,,,:;;;;,,:::::::::::,,,,-::::,,%%%%::
$$$$%%%%$%%%%%%%%%%$%%%%::%%%%:%%%%%%%%%%$%%%%%%%$$$%$$$$%%%%%%%%%%%%%%%%%%$$%%%%%++++%%::::%%%%%::$$$$%%%%%%%%%%%%,,,,::::::::::::,,           :::,,,:::::    ::,,,,:;;;;,,:::::::::::,,,,-::::,,%%%%::
%%%%XXXX,$$$$%%%%%%%$$$$%%$$$$%HHHH%%$$$$%$$$$%%%%%%$%%%%$$$%%%===....+%%%%%%%%%%%%%%%%%++++%::::$$%%%%%%%%%++%%%%:%%%%++%%%%::::::,,---        ;;;:::::::+    ,,----:::::$$::::,;;;;::,,,, ,,,,,,::::%%
%%$$%%%%H%%%%$$$$$$%%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%%%%%:::......,,,,:%%%%%%$$$$%%%%%$$::::%%%%%%%%%%%%++++::++++%::::++::::+:::::;;,,,:::::::-,,,;;;:::::::::,,....:    ::::::,::::::;;;;       $$$$::
%%$$%%%%H%%%%$$$$$$%%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%%%%%:::......,,,,:%%%%%%$$$$%%%%%$$::::%%%%%%%%%%%%++++::++++%::::++::::+:::::;;,,,:::::::-,,,;;;:::::::::,,....:    ::::::,::::::;;;;       $$$$::
%%$$%%%%H%%%%$$$$$$%%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%%%%%:::......,,,,:%%%%%%$$$$%%%%%$$::::%%%%%%%%%%%%++++::++++%::::++::::+:::::;;,,,:::::::-,,,;;;:::::::::,,....:    ::::::,::::::;;;;       $$$$::
%%$$%%%%H%%%%$$$$$$%%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%%%%%:::......,,,,:%%%%%%$$$$%%%%%$$::::%%%%%%%%%%%%++++::++++%::::++::::+:::::;;,,,:::::::-,,,;;;:::::::::,,....:    ::::::,::::::;;;;       $$$$::
%%$$%%%%H%%%%$$$$$$%%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%%%%%:::......,,,,:%%%%%%$$$$%%%%%$$::::%%%%%%%%%%%%++++::++++%::::++::::+:::::;;,,,:::::::-,,,;;;:::::::::,,....:    ::::::,::::::;;;;       $$$$::
%%:::::::%%%%%%%%%%%%%%%$$%%%%%%%%%--::::%%%%%%%%$$$X,,,,:::---,,,++++%%%%%$$%%%%%$$$$%%----:$$$$::++++%%%%%++:::::%%%%%%++++::::::,,:::,,,::::,+++:::::::%::::==    ,,,,,::%%%%:====::,,,,,,,,,  ::::++
::::====%%%%%%%%%%%X%%%%%%%%%%$%%%%..,,,,%%%%%$$$%%%:%%%%+++:::%%%%%%%%$$$$%%%%%%X%%%%%%,,,,X++++%%::::$%%%%,,:::::%%%%::;;;;::::::==,,,---,,,,=:::;;;%%%%:::::,,----:======::::%::::::::::,,,,,,,%%%%::
::::====%%%%%%%%%%%X%%%%%%%%%%$%%%%..,,,,%%%%%$$$%%%:%%%%+++:::%%%%%%%%$$$$%%%%%%X%%%%%%,,,,X++++%%::::$%%%%,,:::::%%%%::;;;;::::::==,,,---,,,,=:::;;;%%%%:::::,,----:======::::%::::::::::,,,,,,,%%%%::
::::====%%%%%%%%%%%X%%%%%%%%%%$%%%%..,,,,%%%%%$$$%%%:%%%%+++:::%%%%%%%%$$$$%%%%%%X%%%%%%,,,,X++++%%::::$%%%%,,:::::%%%%::;;;;::::::==,,,---,,,,=:::;;;%%%%:::::,,----:======::::%::::::::::,,,,,,,%%%%::
::::%%%%%%%%%$$%%%%$%%%%%%%%%%%%%%%%%%%%%%$$$$%%%$$$%%%%%%%%%%%%%%$$$$%%%%%%%%%%%$%%%%%%XXXX:%%%%%%$$$$%%%%%::%%%%:++++++::::::::::::   ,,,....,;;;:::::::%    :::::::::::,,====:%%%%::::::.      ::::++
::::%%%%%%%%%$$%%%%$%%%%%%%%%%%%%%%%%%%%%%$$$$%%%$$$%%%%%%%%%%%%%%$$$$%%%%%%%%%%%$%%%%%%XXXX:%%%%%%$$$$%%%%%::%%%%:++++++::::::::::::   ,,,....,;;;:::::::%    :::::::::::,,====:%%%%::::::.      ::::++
::::%%%%%%%%%$$%%%%$%%%%%%%%%%%%%%%%%%%%%%$$$$%%%$$$%%%%%%%%%%%%%%$$$$%%%%%%%%%%%$%%%%%%XXXX:%%%%%%$$$$%%%%%::%%%%:++++++::::::::::::   ,,,....,;;;:::::::%    :::::::::::,,====:%%%%::::::.      ::::++
%%%%%%%%:$$$$::$$$$:%%%%%%%%%%$$$$$%%XXXX$%%%%%%%%%%X%%%%%%%%%%%%%%%%%%$$$$%%XXXX%%%%%XX,,,,%$$$$::%%%%%%%%%%%::::%%%%%::++++++++++,,---       ,,,,;;;::::+:::::::::::,,,,==::::,::::::::::,....  %%%%::
%%%%%%%%:$$$$::$$$$:%%%%%%%%%%$$$$$%%XXXX$%%%%%%%%%%X%%%%%%%%%%%%%%%%%%$$$$%%XXXX%%%%%XX,,,,%$$$$::%%%%%%%%%%%::::%%%%%::++++++++++,,---       ,,,,;;;::::+:::::::::::,,,,==::::,::::::::::,....  %%%%::
++%%:::::::::%%%%%%$%%%%$$%%%%%%%%%$$%%%%%%%%%XXX%%%%%%%%%%%$$$%%%%%%%%%%%%$$%%%%%XXXX%%%%%%$::::$$$$$$%%%%%:::::::::::%%%%%%:;;;;;,,,,,...     ,,,:::++++:,,,,::,,,,,::::::,,,,,::::::::::-    ;;::::++
++%%:::::::::%%%%%%$%%%%$$%%%%%%%%%$$%%%%%%%%%XXX%%%%%%%%%%%$$$%%%%%%%%%%%%$$%%%%%XXXX%%%%%%$::::$$$$$$%%%%%:::::::::::%%%%%%:;;;;;,,,,,...     ,,,:::++++:,,,,::,,,,,::::::,,,,,::::::::::-    ;;::::++
%%::%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$%%%%%%%XXXX%%%%%%%%%%%$$$%%%$$$%%%%%%%%%%%%%%%X%%%%%%%%%%$$$$$$$::::%%%%%%%:::::++++::++++,,,,,,,,           ---::::::::----,,,,,, ,,,,  ,,,,=::::;;::::;;;;;,,%%%%%%
%%::%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$%%%%%%%XXXX%%%%%%%%%%%$$$%%%$$$%%%%%%%%%%%%%%%X%%%%%%%%%%$$$$$$$::::%%%%%%%:::::++++::++++,,,,,,,,           ---::::::::----,,,,,, ,,,,  ,,,,=::::;;::::;;;;;,,%%%%%%
%%::%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$%%%%%%%XXXX%%%%%%%%%%%$$$%%%$$$%%%%%%%%%%%%%%%X%%%%%%%%%%$$$$$$$::::%%%%%%%:::::++++::++++,,,,,,,,           ---::::::::----,,,,,, ,,,,  ,,,,=::::;;::::;;;;;,,%%%%%%
%%::%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$%%%%%%%XXXX%%%%%%%%%%%$$$%%%$$$%%%%%%%%%%%%%%%X%%%%%%%%%%$$$$$$$::::%%%%%%%:::::++++::++++,,,,,,,,           ---::::::::----,,,,,, ,,,,  ,,,,=::::;;::::;;;;;,,%%%%%%
%%%%%%%%%$$$$%%%%%%%%%%%$$%%%%X%%%%%%$$$$$%%%%$$$%%%%$$$$%%%%%%%%%::::X%%%%%%XXXX%XXXX%%::::%%%%%$$$$$$%$$$$:::::::----$$,,,,,,,,,,==,,,...     ,,,:::::::%           ,,,,,,::::,====:::::::::::::%%%%::
%%%%%%%%%$$$$%%%%%%%%%%%$$%%%%X%%%%%%$$$$$%%%%$$$%%%%$$$$%%%%%%%%%::::X%%%%%%XXXX%XXXX%%::::%%%%%$$$$$$%$$$$:::::::----$$,,,,,,,,,,==,,,...     ,,,:::::::%           ,,,,,,::::,====:::::::::::::%%%%::
%%$$%%%%%%%%%$$$$$$%XXXX%%%%%%%%%%%$$%%%%%%%%%%%%%%%%$$$$%%%%%%%%%$$$$%%%%%XX%%%%$%%%%%%%%%%:::::::%%%%%%%%%::++++;::::::++++:;;;;;  :::,,,,,,, :::%%%::::%,,,,::::::;,,,,..,,,,,,,,,::::::;::::::::::%%
%%::%%%%%%%%%%%%%%%%%%%%$$XXXX%$$$$%%%%%%HXXXX%%%$$$$%%%%%%%XXX%%%%%%%%%%%%$$%%%%%%%%%$$%%%%+%%%%%%%%%%%%%%%$$::::%::::%%$$$$%:::::%%%%%%%%::::%%%%:::%%%%:::::,,---- ,,,,,,     ----::;;;;,    ::%%%%%%
%%::%%%%%%%%%%%%%%%%%%%%$$XXXX%$$$$%%%%%%HXXXX%%%$$$$%%%%%%%XXX%%%%%%%%%%%%$$%%%%%%%%%$$%%%%+%%%%%%%%%%%%%%%$$::::%::::%%$$$$%:::::%%%%%%%%::::%%%%:::%%%%:::::,,---- ,,,,,,     ----::;;;;,    ::%%%%%%
%%::%%%%%%%%%%%%%%%%%%%%$$XXXX%$$$$%%%%%%HXXXX%%%$$$$%%%%%%%XXX%%%%%%%%%%%%$$%%%%%%%%%$$%%%%+%%%%%%%%%%%%%%%$$::::%::::%%$$$$%:::::%%%%%%%%::::%%%%:::%%%%:::::,,---- ,,,,,,     ----::;;;;,    ::%%%%%%
%%::%%%%%%%%%%%%%%%%%%%%$$XXXX%$$$$%%%%%%HXXXX%%%$$$$%%%%%%%XXX%%%%%%%%%%%%$$%%%%%%%%%$$%%%%+%%%%%%%%%%%%%%%$$::::%::::%%$$$$%:::::%%%%%%%%::::%%%%:::%%%%:::::,,---- ,,,,,,     ----::;;;;,    ::%%%%%%
::%%%%%%%%%%%%%$$$$$%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%$$$$%%%%%%%%%::::%HHHH%%$$$$%%%%%%%%%%%:%%%%::%%%%%%%%%::%%%%,++++::::::,:::::%%::::::++++:+++%%%%%%%%%%%%%%,,,,:          =,,,,++::::       %%%%::
::%%%%%%%%%%%%%$$$$$%%%%%%%%%%$%%%%%%$$$$%%%%%%%%%%%%$$$$%%%%%%%%%::::%HHHH%%$$$$%%%%%%%%%%%:%%%%::%%%%%%%%%::%%%%,++++::::::,:::::%%::::::++++:+++%%%%%%%%%%%%%%,,,,:          =,,,,++::::       %%%%::
%%$$%%%%%XXXX%%%%%%%$$$$%%%%%%%HHHH%%XXXX%%%%%%%%%%%$%%%%%%%%%%:::::::%%%%%%%%%%%X%%%%$$::::%::::%%%%%%%%%%%:::::::,,,,%%++++::::::++%%%%%%%%%%+:::%%%%%%%+$$$$::%%%%:::::;;----:,,,,%%::::.      %%%%%%
%%$$%%%%%XXXX%%%%%%%$$$$%%%%%%%HHHH%%XXXX%%%%%%%%%%%$%%%%%%%%%%:::::::%%%%%%%%%%%X%%%%$$::::%::::%%%%%%%%%%%:::::::,,,,%%++++::::::++%%%%%%%%%%+:::%%%%%%%+$$$$::%%%%:::::;;----:,,,,%%::::.      %%%%%%
%%$$%%%%%XXXX%%%%%%%$$$$%%%%%%%HHHH%%XXXX%%%%%%%%%%%$%%%%%%%%%%:::::::%%%%%%%%%%%X%%%%$$::::%::::%%%%%%%%%%%:::::::,,,,%%++++::::::++%%%%%%%%%%+:::%%%%%%%+$$$$::%%%%:::::;;----:,,,,%%::::.      %%%%%%
$$%%%%%%$%%%%%%%%%%%%%%%XX%%%%X----$$::::%%%%%$$$$$$%%%%%$$$%%%:::%%%%%%%%%%%XXXX%%%%%%%%%%%:%%%%::$$$$$$$$$::,,,,:::::$$$$$$:%%%%%%%:::+++++++%%%%%%%::::%::::%%+++++%%%%$$%%%%%::::::::::,----::%%%%%%
$$%%%%%%$%%%%%%%%%%%%%%%XX%%%%X----$$::::%%%%%$$$$$$%%%%%$$$%%%:::%%%%%%%%%%%XXXX%%%%%%%%%%%:%%%%::$$$$$$$$$::,,,,:::::$$$$$$:%%%%%%%:::+++++++%%%%%%%::::%::::%%+++++%%%%$$%%%%%::::::::::,----::%%%%%%
$$%%%%%%$%%%%%%%%%%%%%%%XX%%%%X----$$::::%%%%%$$$$$$%%%%%$$$%%%:::%%%%%%%%%%%XXXX%%%%%%%%%%%:%%%%::$$$$$$$$$::,,,,:::::$$$$$$:%%%%%%%:::+++++++%%%%%%%::::%::::%%+++++%%%%$$%%%%%::::::::::,----::%%%%%%
%%$$%%%%%::::%%%%%%$%%%%%%%%%%%::::::++++;%%%%%%%%%%%$$$$%%%%%%%%%::::$$$$$%%XXXX%$$$$%%::::%::::%%%%%%:%%%%%%:::::;;;;%%:::::;;;;;::%%%+++::::%%%%%%%$$$$%++++++%%%%:%%%%::,,,,,$$$$%%%%%% ----,,$$$$::
%%$$%%%%%::::%%%%%%$%%%%%%%%%%%::::::++++;%%%%%%%%%%%$$$$%%%%%%%%%::::$$$$$%%XXXX%$$$$%%::::%::::%%%%%%:%%%%%%:::::;;;;%%:::::;;;;;::%%%+++::::%%%%%%%$$$$%++++++%%%%:%%%%::,,,,,$$$$%%%%%% ----,,$$$$::
::%%%%%%$%%%%%%%%%%%%%%%%%%%%%$%%%%%%%%%%:$$$$%%%%%%%%%%%%%%%%%$$$%%%%%%%%%%%%%%%$%%%%$$%%%%%%%%%::$$$$%%%%%;;,,,,,    $$::::=,,,,,::$$$:::%%%%::::$$$%%%%:%%%%::::::$::::%%%%%%$%%%%%%%%%%%::::--%%%%$$
::%%%%%%$%%%%%%%%%%%%%%%%%%%%%$%%%%%%%%%%:$$$$%%%%%%%%%%%%%%%%%$$$%%%%%%%%%%%%%%%$%%%%$$%%%%%%%%%::$$$$%%%%%;;,,,,,    $$::::=,,,,,::$$$:::%%%%::::$$$%%%%:%%%%::::::$::::%%%%%%$%%%%%%%%%%%::::--%%%%$$
::%%%%%%$%%%%%%%%%%%%%%%%%%%%%$%%%%%%%%%%:$$$$%%%%%%%%%%%%%%%%%$$$%%%%%%%%%%%%%%%$%%%%$$%%%%%%%%%::$$$$%%%%%;;,,,,,    $$::::=,,,,,::$$$:::%%%%::::$$$%%%%:%%%%::::::$::::%%%%%%$%%%%%%%%%%%::::--%%%%$$
%%$$%%%%%$$$$%%::::H,,,,XX%%%%:$$$$++%%%%+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%XXXX%%%%%%%%%%%XX:::::%%%%%%::::$%%%%::::::     ::$$$$:-----  ,,,;;;+++++::::::$$$$%::::::;;;;:%%%%::::::+::::%%$$$$:HHHH$$$$$$::
%%$$%%%%%$$$$%%::::H,,,,XX%%%%:$$$$++%%%%+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%XXXX%%%%%%%%%%%XX:::::%%%%%%::::$%%%%::::::     ::$$$$:-----  ,,,;;;+++++::::::$$$$%::::::;;;;:%%%%::::::+::::%%$$$$:HHHH$$$$$$::
%%$$%%%%%$$$$%%::::H,,,,XX%%%%:$$$$++%%%%+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%XXXX%%%%%%%%%%%XX:::::%%%%%%::::$%%%%::::::     ::$$$$:-----  ,,,;;;+++++::::::$$$$%::::::;;;;:%%%%::::::+::::%%$$$$:HHHH$$$$$$::
%%%%%%%%%%%%%::::::X----%%%%%%$%%%%::::::%%%%%%%%%%%%%%%%%%%%%%$$$::::$XXXX%%%%%%$$$$$%%%%%%:::::::$$$$%%%%%:::::::====%%$$$$ .....  :::,,,%%%%::::%%%::::+%%%%..     ++++::     ----%%%%%%=$$$$::%%%%%%
%%%%%%%%%%%%%::::::X----%%%%%%$%%%%::::::%%%%%%%%%%%%%%%%%%%%%%$$$::::$XXXX%%%%%%$$$$$%%%%%%:::::::$$$$%%%%%:::::::====%%$$$$ .....  :::,,,%%%%::::%%%::::+%%%%..     ++++::     ----%%%%%%=$$$$::%%%%%%
%%$$%%%%%$$$$::;;;;%::::::::::%%%%%%%::::+%%%%%%%$$$%%%%%%%%%%%:::%%%%%%%%%$$%%%%%%%%%XX::::%%%%%%%%%%%%$$$$%%%%%%%....:::::: :::::::::::::     :::%%%%%%%:$$$$       ::::%%     ----%%%%%%:,,,,%%%%%%%%
%%$$%%%%%$$$$::;;;;%::::::::::%%%%%%%::::+%%%%%%%$$$%%%%%%%%%%%:::%%%%%%%%%$$%%%%%%%%%XX::::%%%%%%%%%%%%$$$$%%%%%%%....:::::: :::::::::::::     :::%%%%%%%:$$$$       ::::%%     ----%%%%%%:,,,,%%%%%%%%
%%$$%%%%%$$$$::;;;;%::::::::::%%%%%%%::::+%%%%%%%$$$%%%%%%%%%%%:::%%%%%%%%%$$%%%%%%%%%XX::::%%%%%%%%%%%%$$$$%%%%%%%....:::::: :::::::::::::     :::%%%%%%%:$$$$       ::::%%     ----%%%%%%:,,,,%%%%%%%%
%%$$%%%%%$$$$::;;;;%::::::::::%%%%%%%::::+%%%%%%%$$$%%%%%%%%%%%:::%%%%%%%%%$$%%%%%%%%%XX::::%%%%%%%%%%%%$$$$%%%%%%%....:::::: :::::::::::::     :::%%%%%%%:$$$$       ::::%%     ----%%%%%%:,,,,%%%%%%%%
$$%%%%%%$::::::%%%%%    ::%%%%%%%%%$$%%%%%%%%%$$$%%%%$$$$%%%%%%%%%XXXX%%%%%%%XXXX%%%%%%%++++:::::;;%%%%%%%%%$$::::+::::%%%%%%-:::::%%:::::::::::   $$$::::%::::,,,,,,:::::,,    ,::::%%%%%%:    ;;XXXX%%
$$%%++++%$$$$::,,,,H::::$$%%%%%%%%%::$$$$$%%%%%%%%%%X%%%%%%%%%%%%%;;;;%%%%%XX%%%%%XXXX%%:::::++++::::::X%%%%::%%%%:;;;;%%%%%% :::::::+++:::++++:%%%:::%%%%:%%%%  ,,,,-----::,,,,:::::::%%%%%$$$$::%%%%%%
$$%%++++%$$$$::,,,,H::::$$%%%%%%%%%::$$$$$%%%%%%%%%%X%%%%%%%%%%%%%;;;;%%%%%XX%%%%%XXXX%%:::::++++::::::X%%%%::%%%%:;;;;%%%%%% :::::::+++:::++++:%%%:::%%%%:%%%%  ,,,,-----::,,,,:::::::%%%%%$$$$::%%%%%%
%%$$%%%%$%%%%%%XXXX%%%%%%%XXXX%%%%%%%%%%%%%%%%%%%XXX%%%%%%%%%%%%%%%%%%%XXXX%%XXXXX%%%%XX::::+++++,,::::%%%%%%%%%%%%%%%%++%%%%:%%%%%%%:::%%%;;;;::::+++++++%%%%%  ,,,,.    ::%%%% %%%%++::::%%%%%++%%%%XX
%%$$%%%%$%%%%%%XXXX%%%%%%%XXXX%%%%%%%%%%%%%%%%%%%XXX%%%%%%%%%%%%%%%%%%%XXXX%%XXXXX%%%%XX::::+++++,,::::%%%%%%%%%%%%%%%%++%%%%:%%%%%%%:::%%%;;;;::::+++++++%%%%%  ,,,,.    ::%%%% %%%%++::::%%%%%++%%%%XX
%%$$%%%%$%%%%%%XXXX%%%%%%%XXXX%%%%%%%%%%%%%%%%%%%XXX%%%%%%%%%%%%%%%%%%%XXXX%%XXXXX%%%%XX::::+++++,,::::%%%%%%%%%%%%%%%%++%%%%:%%%%%%%:::%%%;;;;::::+++++++%%%%%  ,,,,.    ::%%%% %%%%++::::%%%%%++%%%%XX
%%$$%%%%$%%%%%%XXXX%%%%%%%XXXX%%%%%%%%%%%%%%%%%%%XXX%%%%%%%%%%%%%%%%%%%XXXX%%XXXXX%%%%XX::::+++++,,::::%%%%%%%%%%%%%%%%++%%%%:%%%%%%%:::%%%;;;;::::+++++++%%%%%  ,,,,.    ::%%%% %%%%++::::%%%%%++%%%%XX
HH%%%%%%%%%%%%%XXXX%::::%%%%%%%%%%%XX%%%%%%%%%XXX%%%%XXXX%%%%%%$$$%%%%X%%%%%%%%%%%XXXX%%$$$$:::::::%%%%%%%%%%%::::%::::%%::::%:::::==::::::%%%%%:::$$$%%%%+::::--:::::,,,,..:::::::::%%++++%::::  %%%%%%
HH%%%%%%%%%%%%%XXXX%::::%%%%%%%%%%%XX%%%%%%%%%XXX%%%%XXXX%%%%%%$$$%%%%X%%%%%%%%%%%XXXX%%$$$$:::::::%%%%%%%%%%%::::%::::%%::::%:::::==::::::%%%%%:::$$$%%%%+::::--:::::,,,,..:::::::::%%++++%::::  %%%%%%
%%%%%%%%H%%%%HH%%%%H%%%%$$XXXX$%%%%%%%%%%X%%%%%%%%%%%$$$$%%%%%%%%%$$$$%%%%%$$%%%%$%%%%XX::::%::::%%%%%%%%%%%%%:::::====::%%%% ;;;;;::XXX,,,---- %%%:::::::%%%%%%%::::+++++++,,,,,----%%%%%%:::::::XXXX$$
%%%%%%%%H%%%%HH%%%%H%%%%$$XXXX$%%%%%%%%%%X%%%%%%%%%%%$$$$%%%%%%%%%$$$$%%%%%$$%%%%$%%%%XX::::%::::%%%%%%%%%%%%%:::::====::%%%% ;;;;;::XXX,,,---- %%%:::::::%%%%%%%::::+++++++,,,,,----%%%%%%:::::::XXXX$$
%%XX%%%%H%%%%%%HHHH%%%%%HH%%%%%%%%%XXHHHH%HHHH%%%XXX%%%%%XXX%%%XXX%%%%%$$$$%%HHHH%$$$$%%%%%%,,,,,::%%%%%%%%%$$%%%%:    %%%%%%-,,,,,  ::::::    -   +++%%%%:%%%%::::::%%%%%%%::::.,,,,:::::::++++%%%%%%%%
%%XX%%%%H%%%%%%HHHH%%%%%HH%%%%%%%%%XXHHHH%HHHH%%%XXX%%%%%XXX%%%XXX%%%%%$$$$%%HHHH%$$$$%%%%%%,,,,,::%%%%%%%%%$$%%%%:    %%%%%%-,,,,,  ::::::    -   +++%%%%:%%%%::::::%%%%%%%::::.,,,,:::::::++++%%%%%%%%
%%XX%%%%H%%%%%%HHHH%%%%%HH%%%%%%%%%XXHHHH%HHHH%%%XXX%%%%%XXX%%%XXX%%%%%$$$$%%HHHH%$$$$%%%%%%,,,,,::%%%%%%%%%$$%%%%:    %%%%%%-,,,,,  ::::::    -   +++%%%%:%%%%::::::%%%%%%%::::.,,,,:::::::++++%%%%%%%%
%%HHHHHH%%%%%%%%%%%%XXXX%%%%%%H%%%%HH%%%%%XXXX%%%%%%X%%%%%%%XXX%%%%%%%$%%%%HH%%%%%%%%%%%%%%%X%%%%::%%%%%%%%%::::::;    %%%%%%::::::             ---:::%%%%%%%%%,,++++:,,,,  ....:----%%++++%::::::%%%%%%
%%HHHHHH%%%%%%%%%%%%XXXX%%%%%%H%%%%HH%%%%%XXXX%%%%%%X%%%%%%%XXX%%%%%%%$%%%%HH%%%%%%%%%%%%%%%X%%%%::%%%%%%%%%::::::;    %%%%%%::::::             ---:::%%%%%%%%%,,++++:,,,,  ....:----%%++++%::::::%%%%%%
%%HHHHHH%%%%%%%%%%%%XXXX%%%%%%H%%%%HH%%%%%XXXX%%%%%%X%%%%%%%XXX%%%%%%%$%%%%HH%%%%%%%%%%%%%%%X%%%%::%%%%%%%%%::::::;    %%%%%%::::::             ---:::%%%%%%%%%,,++++:,,,,  ....:----%%++++%::::::%%%%%%
XX%%%%%%%XXXX%%%%%%X%%%%%%HHHH%XXXX%%HHHH%%%%%HHH%%%H%%%%XXX%%%%%%$$$$%HHHH%%%%%%%XXXX%%++++%::::::%%%%%%%%%%%;;;;,%%%%%%::::::::::,,,,,,,,::::::::%%%::::+::::::::::=    ,,,,,,-::::%%:::::%%%%::%%%%%%
%%XXXXXXX%%%%%%%%%%%HHHH%%%%%%X%%%%HH%%%%X%%%%%%%HHH%%%%%%%%%%%XXX%%%%%%%%%%%%%%%XXXXX%%%%%%+%%%%%%%%%%%XXXX;;,,,,-++++::%%%%:,,,,,--:::,,,::::,,,,:::++++:%%%%::    ,::::::,,,,.::::::%%%%%::::++++++%%
%%XXXXXXX%%%%%%%%%%%HHHH%%%%%%X%%%%HH%%%%X%%%%%%%HHH%%%%%%%%%%%XXX%%%%%%%%%%%%%%%XXXXX%%%%%%+%%%%%%%%%%%XXXX;;,,,,-++++::%%%%:,,,,,--:::,,,::::,,,,:::++++:%%%%::    ,::::::,,,,.::::::%%%%%::::++++++%%
%%XXXXXXX%%%%%%%%%%%HHHH%%%%%%X%%%%HH%%%%X%%%%%%%HHH%%%%%%%%%%%XXX%%%%%%%%%%%%%%%XXXXX%%%%%%+%%%%%%%%%%%XXXX;;,,,,-++++::%%%%:,,,,,--:::,,,::::,,,,:::++++:%%%%::    ,::::::,,,,.::::::%%%%%::::++++++%%
%%XXXXXXX%%%%%%%%%%%HHHH%%%%%%X%%%%HH%%%%X%%%%%%%HHH%%%%%%%%%%%XXX%%%%%%%%%%%%%%%XXXXX%%%%%%+%%%%%%%%%%%XXXX;;,,,,-++++::%%%%:,,,,,--:::,,,::::,,,,:::++++:%%%%::    ,::::::,,,,.::::::%%%%%::::++++++%%
%%XXXXXXX%%%%%%%%%%%HHHH%%%%%%X%%%%HH%%%%X%%%%%%%HHH%%%%%%%%%%%XXX%%%%%%%%%%%%%%%XXXXX%%%%%%+%%%%%%%%%%%XXXX;;,,,,-++++::%%%%:,,,,,--:::,,,::::,,,,:::++++:%%%%::    ,::::::,,,,.::::::%%%%%::::++++++%%
HH%%%%%%H%%%%$$%%%%X%%%%HH%%%%H%%%%%%%%%%H%%%%XXX%%%%XXXX%%%$$$:::%%%%$%%%%HHXXXX%%%%%XX:::::::::::%%%%%%%%%++:::::,,,,%%::::%;;;;;::::::::++++ ---:::::::%::::;;,,,,:           ,,,,%%:::::%%%%::%%%%%%
%%$$++++%++++%%%%%%X%%%%%%%%%%%%%%%HH%%%%%$$$$%%%%%%H%%%%%%%%%%%%%%%%%%XXXX%%%%%%HXXXX%%%%%%:::::%%%%%%%$$$$%%::::%;;;;::%%%%:::::::::::,,,,,,,    :::++++:;;;;::,,,,       ,,,,,....:::::::;;;;::%%%%%%
%%$$++++%++++%%%%%%X%%%%%%%%%%%%%%%HH%%%%%$$$$%%%%%%H%%%%%%%%%%%%%%%%%%XXXX%%%%%%HXXXX%%%%%%:::::%%%%%%%$$$$%%::::%;;;;::%%%%:::::::::::,,,,,,,    :::++++:;;;;::,,,,       ,,,,,....:::::::;;;;::%%%%%%
%%XX%%%%H::::%%XXXX%%%%%%%XXXX%XXXX%%%%%%$%%%%%%%HHH%%%%%$$$%%%$$$%%%%H%%%%%%HHHH%%%%%XX%%%%:::::  ::::X%%%%%%%%%%:,,,,++%%%%::::::::---   ,,,,;   ,,,++++:::::::,,,, ....  ,,,,.....;;::::,----::::::%%
%%XX%%%%H::::%%XXXX%%%%%%%XXXX%XXXX%%%%%%$%%%%%%%HHH%%%%%$$$%%%$$$%%%%H%%%%%%HHHH%%%%%XX%%%%:::::  ::::X%%%%%%%%%%:,,,,++%%%%::::::::---   ,,,,;   ,,,++++:::::::,,,, ....  ,,,,.....;;::::,----::::::%%
%%XX%%%%H::::%%XXXX%%%%%%%XXXX%XXXX%%%%%%$%%%%%%%HHH%%%%%$$$%%%$$$%%%%H%%%%%%HHHH%%%%%XX%%%%:::::  ::::X%%%%%%%%%%:,,,,++%%%%::::::::---   ,,,,;   ,,,++++:::::::,,,, ....  ,,,,.....;;::::,----::::::%%
%%XX%%%%H::::%%XXXX%%%%%%%XXXX%XXXX%%%%%%$%%%%%%%HHH%%%%%$$$%%%$$$%%%%H%%%%%%HHHH%%%%%XX%%%%:::::  :::