%%%%%%%%%%%%%%%%%%%############**************+++++++++++++++++++++++++++++++++++++++++++++
%%%%%%%%%%%%%%%%%%%%############******************++++++++++++++++++++++++++++++++++++++++
%%%%%%%%%%%%%%%%%%%%###############******************+++++++++++++++++++++++++++++++++++++
%%%%%%%%%%%%%%%%%%%%##############*******+**+****+**+#%%#*++==+++++++++++++++++++++++++*++
%%%%%%%%%%%%%%%%%%%#######*####*#****##****######%#*%##**#*#+===+++++++++++++++++++++***
%%%%%%%%%%%%%%%%%%%%##*****++**##*****#*###*####*#*****#*+*#*#%*+==+++++++++++++++++****
%%%%%%%%%%%%%%%%%%%%###*+****%****##*##**************####***+*%%##+*#=-+++++++++++++******
%%%%%%%%%%%%%%%%%%%#*#*+**+**+##****###********#****#******#*##*#*@**+*#=-=++**************
%%%%%%%%%%%%%%%%*##***+***#***#***#*##******+##***#******++*******##++*%**#*--+************
%%%%%%%%%%%%%%#*#*++************##*#****@@@#***%@@@*********+****+*+*#**%%#**+-+***********
%%%%%%%%%%%%*+**+=*********************@@@#***%@@@********+*+*+++++**##**#%***=+**********
%%%%%%%%%%%+**+++#*#***************##%#@@@#***%@@@***%#*++***++*+***+**##*#%%#*+**########
%%%%%%%%%%**#*+**+#***#*******%%#%#####@@@%###@@@@########**+*+++=**+***##*%%++***########
%%%%%%%%%*+%++***#*##*****##*#@@@@@@@@@@@@@@@@@@@@@@@@@@%****+++++*******#**%#****########
%%%%%%%#+#*++*##*##*###*###*******%@@@@@@*#****##%@@@@@@@@*#**++*********###**+#**#######
%%%%%%+*%**#*#*######*########**#%@@@@@%*##*#+#*#*#@@@@@@@#%#+******#*##*%*##*+**#######
%%%%%%#+%%#%**#*#############%+**#%@@@@@%#*++**#*#@#@@@@@@@%%#**##**#*###%##*@%%%**#%%%%%
@@@@@%%*+#****#*#**#######*#***#+**%@@@@@%#***#**#%#%@@@@@@@#%*##*##*##*##@*#*@@@@**#%%%%%
@@@@@%%+*#****#*##*###*#***+*+*+++*@@@@@@%*+*****##%@@@@@@%#%%**%*###*##*#****####**#%%%%%
@@@@@%%+**++**#*#******+++++*+*****@@@@@@@@@@%%@@@@@@@@@@#*#%#**%##*#****#*******=+**%%%%%
@@@@@%%+#*+##*#*#***#+++++++++*****@@@@@@@%%@@@@@@@@@@@@@@%%**#*%###*#********++++++#%%%%%
%%%%%%%+*+****#+****#%*++++********@@@@@@%***+*++++*#@@@@@@@@%+%***#*********+++++=+#%%%%%
%%%%%%%++*****#+*****###**++++***+*@@@@@@#%%+**+#*%*#*%@@@@@@@##@#*+*++++=+*++++++=*%%%%%%
%%%%%%%++#+***+*+**+++***#*****+***@@@@@@###***#%#%#%%#@@@@@@@%###*+++**+++++++++=+*%%%%%%
%%%%%%%*+*+**+**+**+++++++**#***+**@@@@@@##***#*##@#%#%@@@@@@@%#%%##*+**+*+++++++=+#%#%%%%
##%%%%%%++#*+****=+*==+++=+*+*##**#@%%%%%#*++**#***##%@@@@@@@%#%#####*+++++++++===*%####%%
####%%%%#++#+**+++=+*====+==++%%%%%%%%%%%%%%%###%%%%%@@@@@@@#########%%###*+#+**++########
#####%%%%*+++**+**+=++=====+=*%%%%%%%%%%%%%%@%%%%%@@@@@@%%#########%%%###**#***#+#########
#####%%%%%+++*+#*+++=+++===+=+++++++*#%%%%***#%%%#######%%#*#***##*#%#*#*##*++#+*#########
*#####%%%%%++=+**+++*+=+++==++=*++***#%%%#+++#%%%******#*******#****#******=+*+*##########
*####%%%%%%%*+=++=+#+*===++++=++++++*##%%#+++#%%%*******************##*#**=**+##*#########
####%%%%%%%%%%#==****+*++===++++++++++*##*+++*##%*******************+***+**+*#*****#######
###%%%%%%%%%%%%%*=+***+#+*+===+=+*+*+++**+**#***+*+**************#****++*+*##********#####
#%%%%%%%%%%%%%%%%%+=+****#*++*+==+++++***+*****************+******#*****+##************###
%%%%%%%%%%%%%%%%%%%#+==*#*++*=***+*+++=+++++++++++++++++*+**+*#+*++**+*#***+++************
%%%%%%%%%%%%%%%%%%%%%%#===**#*********+*++++++++++*****+*****+*+**++*#****++++++**********
%%%%%%%%%%%%%%%%@@@@@@@@@@%#++++***###*#*+*#**+**+*++**++++***#*++++###****+++++++++********
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++*#++++++*+*++*+****+***+++++**#%%%##***+++++++++++******
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++++++++=+=++=+++++++*#%%@@@@%%%%##*++++++++++++++****
%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#########%%%%%%%%%%%%%%%%%%#*+++++++++++++++***
%%%%%%%%%%%%%##############*********++++++++++++++++++++++++++++****####*+++++++++++++++**
%%#############********+++++++++++++==============++++++++++++++++++***#*+++++++++++++++**