
   !::::::::::::::::::::+::::::::::::::::::::::::::::::::+::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::+::::::::::::::::::::::::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::::::::::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+:::::+::::::::::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::::::::::+::::::::::::::::::++++++:::::::::::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::::::+:::::++++++++::::+::::+++++++::::::::::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::::+:++++++++:+++oo+++++++++++++:::::::::::::::::::::::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::::::::++++++oooooooo%%%oo+oooooo+++::::::::::::::::::::::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::::::::::+++ooo%%%%%%###%%%%%%%%%%o+++++::::::::::::::::::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::::::::++++o%%%####################%%%%o+++:::::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::::++oo%%#######################%%%%#%%%o++::::::::::::::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::::::+++o%###################################%%%o++::::::::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::::+++%%########################################%%%oo+++::::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::+++o%############@#################################%oo++:::::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::::++%%################################################%oo++::::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::::++%###########################################@########%%o++::::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::::+o%##############@@@@@@@@####@@############@#@@@@@@#######%+:::::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::::+o%#############@@@@@@@@@@@@@@#@@@###########@@@@@##@@###%%%%o+:::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::+o%############@@@@@@@@@@@@@@@@@@@#@###################@####%ooo+::::::::::::::::::::::::::!
   !:::::::::::::::::::::::::+o%############@@@@@@@@@@@@@@@@@@@@@@################@@@#######%%%+:::::::::::::::::::::::::!
   !::::::::::::::::::::::::+o%###########@@@@@@@@@@@@@@@@@@@@@@@@@@#######%%###@#@##@@######%oo+::::::::::::::::::::::::!
   !:::::::::::::::::::::::+o%##########@@#@@@@@@@@@@@@@@@@@@@@@@@@@@##################@@@@@###%++:::::::::::::::::::::::!
   !:::::::::::::::::::::::o%###########@@#@@@@@@@@@@@@@@@@@@@@@#@@@@###############@@@@########%o+::::::::::::::::::::::!
   !::::::::::::::::::::::+%##############@@@##@@@@##@@@@@@@@@@@#################################%o+:::::::::::::::::::::!
   !:::::::::::::::::::::+%##################@@@#######@#@@@@@@@##################################%++::::::::::::::::::::!
   !:::::::::::::::::::::o##################@########@@@@@@@#####################################%%o+::::::::::::::::::::!
   !::::::::::::::::::::o%###################%###@@###############%%#############################%%o+::::::::::::::::::::!
   !:::::::::::::::::::o%#%###################################%%%%%%%%#%%%#######################%oo++:::::::::::::::::::!
   !::::::::::::::::::+%%#################################%%%%%%%%%o%%%%%%########################ooo++::::::::::::::::::!
   !:::::::::::::::::+o##############@#######%#########%%%%%%%%%%%%oo%%%%###################@#####%++++::::::::::::::::::!
   !:::::::::::::::::+%#############@#######%#########%%%%%%%%%%oooo%ooo%%########################%o+++::::::::::::::::::!
   !:::::::::::::::::o######@########################%%%o%%%%%%%oo%%%ooo%%%%######################%o+++::::::::::::::::::!
   !::::::::::::::::+%###@###########################%o%o%%%%ooo%%%oooooo%%%%%%#%#################%o+::::::::::::::::::::!
   !::::::::::::::::+####@#########@###############%#%oo%%o%ooooooooooooooooo%%%%%%%%%%%##########%o+::::::::::::::::::::!
   !::::::::::::::::%#################@##########%#%%%o%%o%ooooooooooooooooooo%%%%%o%%%%%#########%oo::::::::::::::::::::!
   !:::::::::::::::o#########################%###%#%%%o%%o%oooooooooooooooooooo%oooooo%%%%########%o++:::::::::::::::::::!
   !::::::::::::::+%######################%##%##%%%%%%%%o%ooooooooooooooooooooo%ooooooo%%%########%o++:::::::::::::::::::!
   !::::::::::::::+%#######################%%%%#%%%%%%o%ooooooooooooooooooooooo%oooooooo%%%%###%##%o+::::::::::::::::::::!
   !:::::::::::::+o#%#####################%%%%%%%%%%%%o%ooooooooooooooooooooooo%oooooooo%%%%####%#%o+::::::::::::::::::::!
   !:::::::::::::+%#######################%%%%%%%%%%%ooooooooo++ooo+++++ooooooooooooooooo%%%####%%%++::::::::::::::::::::!
   !:::::::::::::+%##################@####%%%%%%%%%%%ooooooooo++++++++++ooooooooooooooooo%%%%####%o::::::::::::::::::::::!
   !:::::::::::::+%######################%%%%%%#%%%%%oooooo+o+++++++++++++ooooooooooooooo%%%%####%o::::::::::::::::::::::!
   !:::::::::::::+########################%%%%%%%%%%ooooooo+o++++++++++++++ooooooooooooooo%%%%##%o+::::::::::::::::::::::!
   !:::::::::::::+########################%%%%%%%%%%oooooo++++++++++++++++++oooooooooooooo%%%%##%o+::::::::::::::::::::::!
   !:::::::::::::+########################%%%%%%%%%ooooooo++++++++++++++++++ooo+oooooooooo%%%%###o:::::::::::::::::::::::!
   !:::::::::::::o#######################%%%%%%%%%%ooooooo++++++++++++++++++oooooooooooooo%%%%%##o:::::::::::::::::::::::!
   !:::::::::::::o#####################%%%%%%oooooooooooo++++++++++++++++++ooooooooooooooo%%%%%%#o:::::::::::::::::::::::!
   !:::::::::::::o######################%%%%%oooooooooooo+++++++++++++++++o++ooooooooooooo%%%%%##+:::::::::::::::::::::::!
   !:::::::::::::o######################%%%%%oooooooo++o++++++++++++++++oooooooooooooooooo%%%%%##o:::::::::::::::::::::::!
   !:::::::::::::o#####################%%#%%%oooooooo++o++++++++++++++++++ooooooooooooooooo%%%%##+:::::::::::::::::::::::!
   !:::::::::::::+#######################%%%%ooooooo+++++++++++++++++++++++oooooooo++oooooo%%%%%#+:::::::::::::::::::::::!
   !:::::::::::::+%#######################%%%%ooooooo+++++++++++++++++++++++oooo+++++++oooooo%%%#o:::::::::::::::::::::::!
   !::::::::::::::o######################%%%%%oooooo+++++++++++++++++:++++++++o+++++++++oooo%%%%%o:::::::::::::::::::::::!
   !::::::::::::::+######################%%%%%%%oo+o+++++++++++++++::::::+++++++++++++++oooo%%%%%+:::::::::::::::::::::::!
   !::::::::::::::+%##########@@@########%%%%%%ooooo+++++++++++++++::::::+++++++++++++++ooo%%###%+:::::::::::::::::::::::!
   !::::::::::::::+%########@###@@@@######%%%%ooooooo++++++++++++++:::::+++++++++++++++oooo%#####o:::::::::::::::::::::::!
   !:::::::::::::::o######@@@##@@#@@#######%%%ooooooo++++++++ooo+++++++++++++++++++++++oo%###%%%#%:::::::::::::::::::::::!
   !:::::::::::::::+######%%%##@@##########%%oooooooo++oo++oooooooo%ooooo++++++++++++ooo%%##%%%%%#o::::::::::::::::::::::!
   !:::::::::::::::o#####%%%%##############%%ooooooooo+ooo%%ooo%%%%%%%%%%o+++++++++ooo%%#%%%%%%%oo#o:::::::::::::::::::::!
   !:::::::::::::::o####ooo%%##########%####%oooooooooooo%%%%ooooooo%%%%%%oooo+++++oo%##%%%#####%oo#o::::::::::::::::::::!
   !:::::::::::::::o###%oooo%%########%#######%oooooooo%%%%o++++++oooo%%%%%oooo+++oo%#%o%######%+:+o#%+::::::::::::::::::!
   !:::::::::::::::+###ooooo%%%%%#####%#%###%%##%ooooo%oooooooo+++ooo%%%%%%%%oo+++oo%%%###@####%+::+%##+:::::::::::::::::!
   !:::::::::::::::+%##ooooo%%o%#%#######%%%%oo%###%o%ooooooooooo%%###%%%%%%%%o+++o%%%oo#@@####%:::+o#%::::::::::::::::::!
   !:::::::::::::::+%#%oo+oo%oo%#%%#####%%%ooooooo###%%oooooooo%########%%oooo%%%####@#o%###%#%o:::+o::::::::::::::::::::!
   !:::::::::::::::+##%+o++o%ooo%%%####%%%%ooooooooo%#@#%%oo%%%o%#@@##%%%ooooo%%o+o%##%%%%%%%%%%:::+o...:::::::::::::::::!
   !:::::::::::::::+%#%+o++ooooo%%%#%%%#%%%ooooooooooo%#@##%%%#%%%###%%%oooo%#%o+++o##%%%%%%%%%%:::+o....::::::::::::::::!
   !:::::::::::::::+%#%oo++ooooo%%%#%%%%%%ooooooooooooooo%##%@#oooo%%%%%ooo%%#oo+++o%%%%%%%%%%%%+::++..:.::::::::::::::::!
   !:::::::::::::::+###ooo+oooooo%%%%%#%%%oooooooooo+++ooooo%%%oooo%%%%%ooo%%%+o++ooo%%%%%%%%%%%+:++:...:::::::::::::::::!
   !:::::::::::::::+%##%ooooooooo%%%%%%%%%oooooooooo++++ooooo%%oooo%%%ooooooo%%oo++oo%%%%%%%%%%%o:o+....:::::::::::::::::!
   !::::::::::::::::o###%+ooooooo%%%%%%%%%oooooooooo+++++oooo%ooooooooooooooooooo+++oo%%%%%%%%%%ooo:..:::::::::::::::::::!
   !::::::::::::::::+%###ooo++++o%o%%%#%%%ooooooooooo++++oooo%%ooooooooooo+o%ooooo+++o%#%%%%%%%%%o:::..::::::::::::::::::!
   !:::::::::::::::::o###%oo++++oooo%%#%%%oooooooooooo+++ooooo%oooooooooo++oooo+oo++++oo%%%%%#%%%+:::::::::::::::::::::::!
   !:::::::::::::::::+%##%ooooo+oooo%#%#%%oooooooooooo+++++ooo%%oooooooo+ooo+++ooo++++ooooooooo%%+:::::::::::::::::::::::!
   !::::::::::::::::::%###oooooooooo%%##%%oooooooooooo++++++++oo%%%oooo%%o++++oooo+++oooooooooo%%+:::::::::::::::::::::::!
   !::::::::::::::::::%###%oooooo%oo%%##%%%oooooooooooo+++++++++ooo%%%oo++++++ooooo+++ooooooooo%%+:::::::::::::::::::::::!
   !::::::::::::::::::o###%ooo%oo%%%%%%%%%%oooooooooooo+++++++++++++o++++++++oooooo++ooooooooooo%+:::::::::::::::::::::::!
   !::::::::::::::::::+%###ooo%o+oo%%%%%%%ooooooooooooo+++++++++++++++++++++oooooooo+++ooooooooo%+:::::::::::::::::::::::!
   !:::::::::::::::::::+###%o%o+++o%%%%%%oooooooooooooo++++++++++++++++++++oooooooooo++ooooooooo%::::::::::::::::::::::::!
   !:::::::::::::::::::+%#@#%oo++oo%%%%%%%%oooooooooooo+++++++++:+++++++++oooooooooo++++oooooooo%::::::::::::::::::::::::!
   !::::::::::::::::::::+%@@%oo++oo%%%%%%%%ooooooooooooo++++++++:+++++oooooooo+++++++:++oooooooo%::::::::::::::::::::::::!
   !:::::::::::::::::::::o#@#%oooooo%%%%%%%%ooooooooooo+++++o+++:+++++ooooooooo++ooo+++oooooooooo::::::::::::::::::::::::!
   !::::::::::::::::::::::%@@#%oooo+o%%%%%%%%ooo%oooooooo+ooo+++++++++ooooooooooooooooooo%ooooooo::::::::::::::::::::::::!
   !::::::::::::::::::::::+#@@#%ooooo%%%%%%%ooooooooooooooooo++++++++oooo++oo%oo+oo%%o%%%%ooooo%o::::::::::::::::::::::::!
   !:::::::::::::::::::::::o#@@##%%%%%%%%%%%ooooooooooooooooo++++++++ooo+++++oooooo%%%%%%%%oooo%+::::::::::::::::::::::::!
   !::::::::::::::::::::::::+#@####%#%%%%%%%%oooooooooooooooo+++++++ooo+++++++ooooooo%%%%%%oooo%+::::::::::::::::::::::::!
   !:::::::::::::::::::::::::+#####%%%%%%%%%%ooooooooooooooooo+++++ooo+++++++++ooooooo%%%%%%oo%%+::::::::::::::::::::::::!
   !:::::::::::::::::::::::::+%####%%#%%%%%%%%oooooooooooooooooo++oooo+++++++ooooooooooo%%%%oo%%:::::::::::::::::::::::::!
   !:::::::::::::::::::::::::+o%###%%#%%%%%%%%ooooooooooooooooooooooo++++++++oooooooooooo%%%%o%%:::::::::::::::::::::::::!
   !:::::::::::::::::::::::::+oo###%%##%%%%%%%%ooooooooooooooooooooo++++++++++o+ooooooooo%%%%o%o:::::::::::::::::::::::::!
   !:::::::::::::::::::::::::++o###%%###%%%%%%%ooooooooooooooooooooo+o++++++++++++ooooo%%%%%oo%o:::::::::::::::::::::::::!
   !::::::::::::::::::::::::::+o###%%%##%%%%%%%%ooooooooooooooooooooooo+++ooo+ooooooo%%%#%%%o%%+:::::::::::::::::::::::::!
   !::::::::::::::::::::::::::+o###%%%###%%%%%%%%ooooooooooooooooooooooooooooooo%%%%%%###%%%o%%::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::++###%%%####%%%%%%%ooooooooooooooooooooooooooo%%%%%%%%%%%%#%%%o%o::::::::::::::::::::::::::!
   !::::::::::::::::::::::::::+o####%%#####%%%%%%%oooooooooooooo++ooooo%%%%%%%%%%%%%%%%%%%%%%%+::::::::::::::::::::::::::!
   !::::::::::::::::::::::::+o#@@###%%#####%%%%%%%oooooooooooooooooooo%%%%%%%ooooo%%%%%%%%%%%%:::::::::::::::::::::::::::!
   !::::::::::::::::::::::+%#@@@###%%%%#####%%%%%%%ooooooooooooooooooooooooooooooo%%%%%%%%%%%o:::::::::::::::::::::::::::!
   !:::::::::::::::::::+o#@@@@@#####%%%%#####%%%%%%%ooooooooooooooooooooooooooooooo%%%%%%%%%%+:::::::::::::::::::::::::::!
   !::::::::::::::::+o%#@@@@@######%%%%%%%####%%%%%%%%ooooooooooooooooooooooooooo%%%%%%%%%%%%::::::::::::::::::::::::::::!
   !:::::::::::++o%##@@@@@##########%%%%%%%####%%%%%%%ooooooooooooooooooooooooo%%%%%%%%%%%%%+::::::::::::::::::::::::::::!
   !::::::::+o%#@@@@@@@@@####%#%####%%%%%%%%####%%%%%%%%ooooooooooooooooooooooo%%%%%oooo%%%%:::::::::::::::::::::::::::::!
   !::::++%#@@@@@@@@@@@@@%%%%%%%####%%%%%%%%%####%%%%%%%oooooooooooooooooooooooooo%%%ooo%%%+:::::::::::::::::::::::::::::!
   !::+o#@@@@@@@@@@@@@@@#%%%%%%%####%%%%%%%%%%####%%%%%%%oooooooooooooooooooooooooo%%%oo%%%::::::::::::::::::::::::::::::!
   !o%#@@@@@@@@@@@@@@@@@#%%%%%%%####%%%%%%%%%%%#####%%%%%%ooooooooooooooooo+ooooooo%%%%%%%%+:::::::::::::::::::::::::::::!
   !@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###%%%%%%%%%%%%######%%%%%ooooooooooooooooooooooooo%%%%%%#@#o+::::::::::::::::::::::::::!
   !@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###%%%%%%%%%%%%%%######%%%%%ooooooooooooooooooooooo%o%%%%#@@@@%o+:::::::::::::::::::::::!
   !@@@@@@@@@@@@@@@@@@@@%oo%%%%%%##%%%%%%%o%%%%%%%%%#####%%%%%%oooooooooooooooooooo%%o%%%%#@@@@@@#%o+::::::::::::::::::::!
   !@@@@@@@@@@@@@@@@@@@@%oo%%%%%%%#%%%%%%ooo%%%%%%%%%%######%%%%%%oooooooooooooooo%%%%%%%%@@@@@@@@@@#%o+:::::::::::::::::!
   !@@@@@@@@@@@@@@@@@@@@%oo%%%%%%%%%%%%%%ooooo%%%%%%%%%%######%%%%%%%ooooooooooooo%%%%%%%#@@@@@@@@@@@@@@#%++:::::::::::::!
   !@@@@@@@@@@@@@@@@@@@@#oo%%%%%%%%%%%%%%%oooo%%%%%%%%%%%%%#####%%%%%%oooooooo%%%%%%%%%%#@@@@@@@@@@@@@@@@@@#%+:::::::::::!
   !@@@@@@@@@@@@@@@@@@@@#ooo%%%%%%%%%%%%%%ooooo%%%%%%%%%%%%%#######%%%%%oooo%%%%%%%%%%##@@@@@@@@@@@@@@@@@@@@@@#o++:::::::!
   !@@@@@@@@@@@@@@@@@@@@#%oo%%%%%%%%%%%%%%%ooooo%%%%%%%%%%%%%#######%%%%%%%o%%%%%%%%%##@@@@@@@@@@@@@@@@@@@@@@@@@@#o+:::::!
   !@@@@@@@@@@@@@@@@@@@@@%oo%%%%%%%%%%%%%oooooo%%%%%%%%%%%%%%%%#####%###%%%%%%%#####%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@#o+:::!
   !@@@@@@@@@@@@@@@@@@@@@%oo%%%%%%%%%%%%%%oooooo%%%%%%%%%%%%%%%%%#################%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#o::!
   !@@@@@@@@@@@@@@@@@@@@@#ooo%%%%%%%%%%ooo%oooooo%%%o%%%%%%%%%%%%%%##############%%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+!
   !@@@@@@@@@@@@@@@@@@@@@@oooo%%%%%%%%%%oooooooooo%%o%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%!
   !@@@@@@@@@@@@@@@@@@@@@@%ooooo%%%%%%%%ooooo%ooooo%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@#ooooo%%%%%%%%ooooooo%oooo%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@%ooooooo%%%%%%oooooooooooo%%%%%%%%%%%%%%%%%%%o%%%%%%%%%%oo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@#ooooooooooooooooooooooooooo%%%%%%%%%%%%%%%%oo%%%%%%%%%%oo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@%ooooooooooooooooooooooooooooooo%%%%%%%%%%oo%%%%%%%%%%ooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@ooooooooooooooooooooooooooooooo%%%%%%%%%ooo%%%%%%%%%oooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@#ooooooooooooooooooooooooooooooo%%%%%%%ooooo%%%%%%%ooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@%ooooooooooooooooooooooooooooooo%%%%%ooooo%%%%%%%oooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@%oooooooooooooooooooooooooooooo%%%%oooooo%%%%%%oooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@#oooooooooooooooooooooooooooooo%ooooooooo%%%%%%oooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@#oooooooooooooooooooooooooo%oo%oooooooo%%%%%%ooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#ooooooooooooooooooooooooo%%%ooooooooo%%%%%oooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%ooooooooooooooooooooooo%%%%ooooooooo%%%%oooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%oooooooooooooooooooooooooooooooooo%%%%ooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%ooooooooooooooooooooooooooooooooo%%%oooooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#ooooooooooooooooooooooooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#oooooooooooooooooooooooooooooooooooooooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#oooooooooooooooooooooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#oooooooooooooooooooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%o+oooooooooooooooooooooooooooooooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%o+++oooooooooooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#o+++oooooooooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%o+o+ooooooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#ooooo+ooooooooooooooooooooooo%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%oooo+ooooooooooooooooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%oooooooooooooooooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%oooooooooooooooooo#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%ooooooooooooo%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%oooooo%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!
   !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@!

