code:
&&&&&&&&&&&&&&&&&&&&&&&&@&&&&&%########%%%%%%%%%%%%%%%##%%#####((((((/((((((((((######((((((((((((((((((///////////////(/////////((/(((((((///////////////////((((///(((((((((((((####%%###((#((#((####
&&&&&&&&&&&&&&&&&&&&&&&&@&&&&&%########%%%%%%%%%%%&%%%%%%######((((((((((((((((((#######((((((((((/(////////((((((/(///////////////((((((((/////////////////(((((((/(//((((((((###%#####((((((((#######
&&&&&&&&&&&&&&&&&&&&&&@@@&&&&&%########%%%%%%%%%%%&&%%%###%######((((((((((((((#(#####((((((((((///////(((/((((/((/////////(/////////((((((//////////////////(((((((((((/((((((((####(((((((((((#####(#
&&&&&&&&&&&&&@&&&&&&@&@@@&&&&&%#######%%%%%%%%%%%&&&%%%%%#%#########((((((#(((((((####((((((((////(((///(((((((((/////////((((////////(((((((///(((/////////////(((((((((((((((((###((((((((#########(#
&&&&&&&&&&&&&&&&&&@&&&&@@&&&&&%#######%%%%%%%%%%%&&%%%%%%%%%########((((((((((((((####(((((((((((((////((((((((((///////((((((////((///(((((((/////(((//////////((((((((((((((((((#(((((((############%
&&&&&&&&&&&&&&&&&@&@@@&@@&&&&&%####%##%%%%%%%%%%%&%%%%%%%%%%%###%#(##((#((((((((######(((((((((((//(((((((((((((((////(((((((((////(((/(((((((/////////(/////(((/(((((((((((((((((##(#((#####(######%%&
&&&&&&&&&&&&&&&&@&&&&&&@@&&&&&%####%##%%%%%%%%%%%&&%%%%%%%%%%%%######(###((((#(((#####(((((((((((((((((((((((((((((((((((((((////////(((((((((//////////////(/(((((((((((((((((((#(################%&@@
&&&&&&&&&&&&&&&@@@@@&&@@@&&&&&########%%%%%%%%%%%%%&&&%%%%%%%%%%%%%#####(((#(((/((###((((##((((((((((((((((((((((((((((((((((//////////////////////////////////////////(((((((((((###############%%&@@@
&&&&&&&&&&&&&&@@@&@@&@@@@&@&&&########%%%%%%%%%%%%%%&&%%%%%%%%%%%%%#%####((((///((((##((##(((((((((((((###(((//////////////***********/*//**********************/////////////((((((#############%&@@&&%
&@&@&&&&&&&&&&@@@&@@@@@@&&&&&&######(##%%%%%%%%%%%%%%&&%%%%%%%%%%%%%%##%#((((////(/((#(###(##((((###((//////////////////******************,**********************////////////////(((######%%%%%&&&%%%%%
&@&@&@&&&&&&&&@@@&@@@@@@&&@&&%######(##%%%%%%%%%%%%%%&&&&&%%%%%%%%%#%%##((##(((/////((######%##(/////////////////////*********,,,,**********//**************************/////////////(((%&&&&&%%%#%####
@@&@&&@&&@&&@&@@@&&@@@@@&&&&&%######((###%%%%%%%%%%%%%%%&&&%%%%&%%%%%%#((##(##(((((#((#%%%#(////////////////////*************,*,,,,,,*****///*/****////*///////////**//*********//////(##((///////((###
@@&&&&&&&&@&&@@@@@@@@@@@&&&&&%######(#####%%%%%%%%%%%%%%%&&&&&&&&%%%&%%##%###(#(((///(#((//////////////////////**/***************/**/*///////((/////////(//////********************/(#((/**********/(##
@@@&&&@&&&&@@@@@@@@@@@@@&@&&&%######(#######%%%%%%%%%%%%%%&&%&%%&&&%&%%&%%%#(((/(///(/((((///////////////**************,************///////////////(((//*********,***,,********/(#((/***,,,,,,,,***//(#
@@@@@&@&&&@@@@@@@@@@@@@@&@&&&%######(#######%#%%%%%%%%%%%%%&%&&&&&&&%%%%%#(#((#(//((###((((####////////********,,,,,,,,,,,,,,,,,,,,,*****/////////////////////////////***//((//*****,,,,,,,,,***,****/(
@@@@@@@@@&@@@@@@@@&@@@@&&@@&&%#####((#########%%%%%%%%%%%%%%%%&&&&%&&%%%%%####((((((((((((####(##(//****////***,,,,,,,,,..,,..,,,,,,,******///////////////////////*,,,,////(/***,,.,..,,,,,**,,,,,****(
@@@@@&@@@&@@@@@@@@@@@@@@&@&&&%######(###########%%%%%%%%%%%%%%%&&&%&&%%%####(((((((((((((((((/((((/////********//*,,,,..........,,*,*****/(/(/////////////////*/(/(((((/*///**,,,,,,****//*,...,,,,,,*/
@@@@&&@@@@@@@&@@@@@@@@@@&@&&&%#####((############%%%%%%%%%%%%%%%&&&&%%%##%%##((##(((((((((((//(/(///*//****,,,,*,,**//*,,..,,***///*/****////((((((((((((((((((((((##(///////******,,.. ...,,,,,..,,*/
@@@&@&@@@@@@@@@@@@@@@@@&&@&&&######((############%%%%%%%%%%%%%%%%%&&&&%#####%####(((/((//(//(/(///////****,,,,,,,***************///((((((((((((((((#(((#((((((####((#(/////*,,........,,,,*,*,,,,,****/
@@&&@@@@&@@@@&@@@@@@@@@&@&@&&######((##############%%%%%%%%%%%%%%%%&&&&%%##########(((((//////////(///****,,,*,,,*,,************/**/###(((((#((((//(((///((/###%#(/*,,******,,,*,,,,,,,******,********/
@@@@@@@@@@@@@@@@@@@@@@@&@@@@&######((##############%%%%%%%%%%%%%%%%%&&&&%########((((((#(//////(/(((///*,,,,,,,**,,,,,,,*********////(/(**//#((//(((*/((#((####%##(/////(/,***********//////***,,,,,,,,
@@@@@@@@@@@@@@@@@@@@@@@&&&@@&######((##############%%%%&%%%%%&%%%%%##%&&&%%#%####(((((((#(/*////((//**,,,.,,,***//*,,,///*/*****/(///. /(((((###########((#(((#%#((////(/*,*,****,,,,,,,,,**,*,.,....,
@@@@@@@@@@@@@@@@@@@@@@@&@@@&&######(#############%%%%%%%%%%%%%%%&%((///#%&&%%%%((((((((((#(/////(/(//,,.,,,,,,,,,,,,,*,**/**,**/(/**(##((((#(###((/(#(#(#(//(((####(%#(/*,,..........,,,,,*,*********//
@@@@&@@@@@@@@@@@@@@@@@@&&@&&&######(#############%%%%&%%%&%%%%%%%#(/***/(((#%%%%%(((((((((#/*(((((//***,,,,*********,****/(*,****(###################%########(##%%%%(//*,,,,,,,,,,,,,,*********/(((((#
@@@@@@@@@@@&@@@@@@@@@@@&&@&&&######(#############%%%%%%%%%%%%%%%#(/***/(/*,,,*%%%%##(((((((((//(#(/***,.,,,*,,*,,******/(%/******(#####%%%%%%%########%####(.((##%%&%(/*,**,**********///////////////((
@@@@@@@@@@@@@@@@@@@@@@@&&@&&%######(##########%%%%%%&%%%%%%%%%%#(//**/(/**,,../%#%%%#(((((##(((/(((//*,,,,,,,,,*///*/*/***,*****/(/(###%#####%%#############((####%%%%(/***,***/////////*******,*,,***/
@@@@@@@@@@@@@@@@@@@@@@@@&@&%&######(##########%%%%%%&%%%%%%%%%%(/////(/**,,,,..(%###%%((/(((####((((//,,,,,,,,*****,************,,**(#(#*((#####(((/(##%####(#####%#(//(((/***,,,,,,,,,,,,,,,,,,,,,**/(
@@@@@@@@@@@@@@@@@@@@@@@@&@@%%######(##########%%%&%%%&%%%%%%%&#(//////****,,,,,*%%#(((####((((###((////****//////*/***/*//**//******/#############(###############%#(((#(/*,,,,,,,,,,*,,***/******//((#
@@@@@@@@@@@@@@@@@@@@@@@@&@@#&######(##########%%%%%&&%%%%%%%%%(((////*****,,,..,#%%#(#((((((#(##((((((/((////**,*********////////*//((##%%%#####(#(#####(###///(#(#%#((##(*,,*,,,******/////////((#####
@@@@@@@@@@@@@@@@@@@@@@@@&@@&%######(#########%%%%%%&&%%%%%&%%%(((///*******,,,,,#%%%#(((((((((#####(////***/*////////*///////////(#*(((##(((#/##((((((((((((((((((####(##(/*****////((((((((((////((///
@@@@@@@@@@@@@@@@@@@@@@@@@@@&%################%%%%%%&&%%%%%&%&%((////*******,,,,/##(#%###((///(/(((((//***,.,,.,*******,,,,,,,,,,,**/((((((((((((((/((((((///////////((((((##(((((((((((//****/*//((/((/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######(#########%%%%%%&&%&%%&%%%#((////********,,,(#(((((##(((((((#(((#((//**/******/***.,,.... .,,,,*/(###(##((///**/****//*///(((((//((/((((((((///***********//(((#(((/
@@@@@@@@@@@@@@@@@@@@@@@@@@&@%%#####(#########%%%%%%&&%%%%&%%%#(((////********,,#((///***/##((((((#####((((///////*/////**********//((((///////******/*//////(((((((((((((((/////***********/(#(//////((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################%%%&%%&&%&%%&%%%#(((//////*********(#(/(/****,***/(//////((########(((((/////////((((#((((((/(((((/////(((((((((((((((((((((//////********//(#((//////((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%###########%%%%%%&&%&%%&%%&#((///////***********#((//**,,,,*/((((((////////////(((((((###((##########(((((((((((((((((((((((((((((((((((///////////////#((////(((((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##########%%%%%%%&&%&%%&&&&#((//////////*********##((/**,,/////**////(((////(((((((((((#######(#(((((((((((#((((#(((((((((((((((#(#((((((((((((((//////##(((((######%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##########%%%%&%%&&%&%%&&&%#((////////////********(%((//*,,********/***//(((((((((((#############(((((((((((((((#(((((((((((####(((((((((((((((((((((((((///////*****
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%########%%%%%%&&&&&&&&%%%%%##((//////////////******(%#(//*/*////////////((///((((((((###############(#((#(((((#((((((((((((((#########((((((((((((((((((((////////***
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#(######%%%&&%&&&&&&&&%%%%%##(((((/////////*//**/*/*/##(((((((((((((((///////((((((##########%%%###(((((((((((((((((((((((((###########((((((((((((((((((/(////////*/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%######%%%%&&&%&&&&&&&%%%%%%###((((((/////////////////////////////(/((((((/(((((((##############%%####(((((((#(#(((((((((((#%#%%%%#########(((((((((((((//////////////
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#(####%%%%&&&%&&&&&&%%%%%%####(((((((////////////////////////////////(((((((((((################%%%#####((((#####((((((#############%#######((((((((/(/((///((((/////
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%######%%&%&&&%&&&&&%%%#%%#%####(((((((((///////////////////////////(/((((((((################%&%%%%%#######(######((#####&@@&&%%#%%%%#######((((((((((((////((/((((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%#####%%%&%%&&%&&&&&%%%###########(((((((((((///(////////////////(/(((((((((########%%#%#%%&&&&&@&%#%%#####(######(((###%%@@@&&&&&%%%%#########(((((((((((/((/((//((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%#####%%%&%%&&%&&&&&%%#############(((((((((((((/(////////////(((((((((((#########%%%%&&&&&%&&&@@@%#%%%###########(######%&%&&&%%&&&&%%%%%#######(((((((((((((((((((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%####%%%&&&&&&&&&&&%%%%############(###(((((((((((((((((((((((((((((((((########%%%%%&&&&&&&&&&@@@%#%###%################%&%&%%&&&%%&&%%%%#######(###(((((((((((((((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%####%%%&&%&&&%&&&&%%############((((((((((((((((((((((((((((((((((###########%####%%%&&&&&&&&&@@@&%%####################%%%&&%&&&&%&&&&%%%############(####((((((((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%###%%%&%&%&&&&&&&&%%%##%#%####(#((((((((((((((((((((((((((#(###############%%######%%&&&&&&&&&@@@@%%#########(#############%%%&&&%&&&&&&&%#################(#((((((((
@@@@@@@@@@@@@@@@@@@@@@@@@@@@%&&@&&%%&@@@@@@@@@@@@@@@&&&@@&&%##%%&&&&&&&%&&&%%%&&&%#%&&&&&&&%#%&&&&&@&&%##%&@@&%%&&@@&&&@@@@@&&@@@@@@&&@&&%%&&&&%###%&&&&&&&&%&&@@&&&@@@@@@@@@@@&&&&&&&%#########(((((((