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