&(///((/##((#((((((((((((((/((/((((/((/(((//(((((##((##((((((((((//#((((/((//(((
((((((((#((((#((((((#(((((///((((/////////(//(((((((((((((((((((//(///((((//((((
((/((#((%(((((((((/(/(((((/(((%%#/////////(/(///#%%%((((((((((((//(((/%(%(%%((((
(((((#(%((((((##(((((((/%%//%(//////(//%/#//(((((((((%(#%#(((((((((((((%((//((((
(((((#((%(((((//(##(%%((((((%((((((((/////((((((#((((%((((((%#((((((((%(#/%#((((
(((((((/(((##(#((#%(((((((((%(((/#@@@@@@@@@@@@@#(##((%(##(((#((%(((((#(((#(#((((
(#(((((((((((##%##(((((((/(/@@@@@@@@@@@@@@@@@@@@@@@@@##########(((%##(####((((((
((#(((((((((#%#(##((((((#@@@@@&&@@@@@@@@@@@@@@&@@@@&&@@@@(##(##(###(%##(#(((((#(
(##(#((((((#%(#(#((((/@@@&&@&#%@@@%&@@@@@@@@@%%&@&@&#(%@@@@%##((###/(%###(((((((
(##((#(#(#%##(#(#(((@@@@##%@%#((&@&#&@@@&&@@%#%%&@&%(((&@@@@@###((((((%#(#((((((
#((((((((%#(##(((((@@&/@@(/%@@%#%&@@@%##%&@@%&&@&%####%@&##&@@@#(((#(##%(##((#((
##((((((%(##((((((@@@@#/%@&(%%@@&%((/*****//(#@@&%##@&%#((%@#&@@####(###%((((#((
(#(((#((%#(##(#((@@@&%@&#(#@@&%(((/***,,,***//((#&@@%##%@&#(%@@@@#(####((%#(((((
/#(((((%#(##((((@@@&@&#(#&@&%##(((///***///(((#(##%@@&@&##%@%#&@@#####((#%((((((
##(((((%(#(%#(((@@&@#(#&@@&%##/****((/(((/**/*,*((%&@@@%&@%(#@&@@(#%#((((%(/((((
(((((((%((((((#(@@@%#&&#@@%#((#####%%((&%%%%%%##((#&@@&%@%&@%%@@@(((##(#(%(/((/(
(((((//#/(((/(/(@@&&@%%&&@&&&%@(@%@%&##%%@#@@@&##%%&@@@&%%@#@&&@@((((((((%((((((
((///(//%(///(//&@&@%%%%@@&/,*%#%(#*##((*,((##(,,/%&@@@@@%%@%@@@@((((((((%/(/((/
(((((((/%(/((((((@@@&&%@@&&#*******/#/#(/*******/#%&@@@@&@%#@&@@((((((((%/(/((((
#((((((((%%%%%%%%%@@@&@@%@@%#((////##*(((/*//(((%%&&@@&&@@@#&@%%%%%%%%%%(((((((/
((#((///(/%(///((#(@@@%@,/@&%%######&(&(#(/(###%%&&@@&,%@&@%%@&(((((((##((((((/(
(((((((/(((%/(((((((@@#@&@&@&&%%%%&&@%&@&%###%%&&&@@@@@&&@&&&@#((((((%((((((((((
(((((((((((((%(((/#(&@##&#@@&&&&&%/%/%%(&/#&%&&&&@@@@@@@@&&&&@((##(/%((#(((#((((
((((((((((#((##%(#((#@@%&%&@@@&&%#%%%##%%%%%&&&&&@&&@@@@@@@@@(##((%/((#((#((((((
(((((((((/(((((((%(##(@@#@%@&@@@&&%(//*/(#%&&&&@@&%&@@@@@@@&#(((%(((((((((((((((
#((/((((/(((/((((((%%(((@&&%@&&@@@&&&&%%&&@&@&&&&%%&@@&@@&&&@%(((((((((/((#((/(/
(#((/(((((((((((((((((#%/(@&@&%&&@@@@@&@&@@@@&&%###&@@@&@%@&@(((((((((((((((((((
((/////((/(((((((/((//(/((%%(@&#%%@@@@%&&@&&&%#(((#%@@@&&&&@@@@@((((((((((((((((
((((/((((((((((/((((((((((//@@&%(#%&&&&%@@&&%#(((((#@@@@@@@&&&@%@((((#(#(((((((#
((#((((((((((((((#((((((@@@&@@%#(/#%&&##%%%#((((/((##@@@@@@@@@@@&&@%@%((((((/(((
(((((((((((((((((#(#@@@@@(@@%%#((((##((/((#(//////((#%@&@@@@&&@@@@@&@@(/((((((((
(#(((#((((((((((@@@@@@@#@@%%###((/(((////(((////((/((##@(@@@@@@@@@@@@@(((((((((/
((((#(((((((@@(@@@@@@#%@&%%#((//(#(((//*/(((((/////(#@%@@@%@@@@@@@@@@@@@@#((((((
#(((((#((@@@%@@@@@@(@(%%%&#&%#(((///((((##(////(((#@#@@@@@@%@@@%@@@@@@@@@@@@((//
((((((@@@@#@@@%##@@(&(%%%%&&#&@&(####////(((&#(%%%@%@@&@@@@%@@&@@@@@@@@@@@@@@(((
(#(#@@@@#@@##@@@@(%%%&#%%#%%%%#(#%%%##&#&(%%%(%%&@%%@@@%@&@#&@@@@@@@@@(@@@&@&((/
(##(@@@((@@@@@#%%@%%%&&%%%%&#%(%#(%%%##&#%%%(%%%@#@@@@#@@&@%@@@@@@@@@@@@@@@@%///
#(((@@#@@%@(%%%%%%%%%%%%%%%%&%%%%%%%%%%#%%%%&%%&#&@@@@@@@%@@@@@@@@&@@@@#@@@@%(/(
#(((@#@@@(%%%%%&%%%(%%%%(%%%%(%#%#%%%%%%%%%%%%&@#@@%@@@@#@@@@@@@@@@&%@@@@@@@#((/
##((@@@%%%%%%%&%%%%&(%%%&#%%%&%%(%#%%%%%%%%%%&@&@@#@@@%@&@@@@@@@&@@@@@@@@@@@#///
((/(@#%%%%%%#%%%%%%%&#%%%&%%%%&%%%%%%%%%%%%%&&&@@%@@@#@@@@@@@@@&@@@@@@@@@@@@#///
((((@%%%%%%#%&%%%%%%%&%%%%&%%%%%%%%%%%%%%%%@(@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@(///
#(//@%%%%%%(%%%%%%%%&&&%&&&%%&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////
/(//////////////////////////////////////////////////////////////////////////////