..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=+#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*--*%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++*%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=#%%%%%#*#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++-==+#%%%%#++#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+====##%%%%%%%%*=+*%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+-+#%%#+-+%%%%%%%*-=*%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*===-+*%%%%%%%%*==#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%**+*%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+=+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*-+*%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=*#**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++#%*.
.*%%%%%%%%%%%%%%%%%%%%%%%%#+++#++*%%%%%%%%%%%%%%%%%%%%%%%%%#**%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%*++*%#.
.*%%%%%%%%%%%%%%%%%%%%%#=*+#*+*%%%%%%%%%%%%%%%%%%%%%%%%%%=-++*##*++=+%%%##%%%%%%%%%%%%%%%%%%%%#*#%#.
.*%%%%%%%%%%%%%%%%%##*****+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**==++*#%#***+=*%%%%%%%%%%%%%%%%%%%#++*%#.
.*%%%%%%%%%%%%%%#**+*+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=+**##*+=++*#####*=#%%%%%%%%%%%%%%%%#++*%#.
.*%%%%%%%%%%%#*+++*+**+++#%%%%%%%%%%%%%%%%%%%%%%%%==##%%%*+*++***##**+==+***%##%%%%%%%%%%%%%%*--*%#.
.*%%%%%%%%##***+*+*=*#*=+#%%%%%%%%%%%%%%%%%%%%%%%%##*+***++####+=-+=*###***=+-+%%%%%%%%%%%%%%#+=*%#.
.*%%%%%#*+**+*#%++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%*=++***#***+++*#####*++==-***#%#*#%%%%%%%%%%%%#+=*%#.
.*%%#**+*%#*+#*++**+*%%%%%%%%%%%%%%%%%%%%%%%%%%###*++=++*%##**+=--***##%#**+#+=+*%%%%%%%%%%%%*-=*%#.
.*%#*+*+****+***+*#%%%%%%%%%%##%%%%%%%%%%%%#*++++***#****==++*###***++===***%%%#***#%%%%%%%%%%%%%%#.
.*%#******+++#****#*#%%%%%%%#*#**%%%%%%%%%#+*#**#*+*++####*#*+*+=+######**++*-====+%%%%%%%%%%%%%%%#.
.*%#***++*+*+##%++#**++%%#%#++****+#%%%%#+*+=++*###****==+*###%%#***++-==+**##%%#*+*+*%%%%%%%%%%%%#.
.*%%****#*+*+#*++*###+=+*#%%*++*##*#*#%%#*#***+*+#=*####****+*##**###%##**+=+==++==#*#%%%%%%%%%%%%#.
.*%%#**+#**++**+%%%%%%%%%%%%%%*=+*##***#*+++####**+++=+++*#%%%#*+=*==+===+**###%%%**%*%%%%%%%%%%%%#.
.*%%#***#*+++##**+*%%%%%%%%%%%*++=-**###*++====+*###%#*+++++==++*####%##++==*====--+**%%%%%%%%%%%%#.
.*%%*++*#*++=*#*+=++#%#%%%%%%%%#*+++-=**##%#***+=+=+*+*###%%#**+==+==+===+**%##%%%%%#*%%%%%%%%%%%%#.
.*%%*++##*+++*##*++=+##%%%%#+=+*###*++=+==++*##%%#**+++===-+=+*###%%%%#****=+==+++=*-+%%%%%%%%%%%%#.
.*%%++*###*+=*##*+*+*+*%%%%*+==-=+*##%##*=+-====+*+##%%%%#**+++==-=+***+=++*%##%%%%%%%%%%%%%%%%%%%#.
.*%%**###++++*#%#**=+===*#%%#++=+-=++**##%%%##+*++====+=+=+####%%%%%%%#*++=++++===-+-=+=*%%%%%%%%%#.
.*%#**##*+=++*####*++++++#+*##%##+++==++==*+*###%%%%%##**+++**====+=+*++=+++#*##%%%%%%%%%%%%%%%%%%#.
.*%%#*#**+++=+**###***++=+-=++**###%##**##*==++=====+=+*#*###%%%%%%%%###*#+=*===+=-+=-=-=+#%%%%%%%#.
.*%%#*#*#==+=+***#####*++*+**++=+++***###%%#%%##**+*++***==+==+***#=+***+%+*#**####%%%%%%%%%%%%%%%#.
.*%%#**+*+**+++***######*#+**++=++=+=++=++*+*****#######%%%%%%%%%#####**+*#+#+*+++=*+*+++=*%%%%%%%#.
.*%%##*+++**+++#+***#***#######*#**##*+++=*++====+==+===++++++++++++**++++**#***#**#*####%%%%%%%%%#.
.*%%*+***++***++******+*+***#**##**#######%##%######%#######*###**#**#****++*****++#++**+=*%%%%%%%#.
.*%%*+*++++++*+++++=+++++*++****#++*******#++*++++***+*+***#+***++*++*+++*++****#*+#*****+*%%%%%%%#.
.+%%*+*+*++*****%##****+=+++**+=++=*====+=*++**+=+++****#++**#********+***++#**#***#***####%%%%%%%#.
.+%%*+*+*++*+*++++++++++***+*+****########################*##%###*#**#***#++*++*#++*+++**+#%%%%%%%#.
.+%%*+******+*++***+***************###***+*****+=+==+=++*+++**+=++*++*+*+**##*****##%######%%%%%%%#.
.+%%**%%%%%%%%%%%%#+#%%%#####*******====+=*++****#****################****##*++=++=+++===-+**#%%%%#.
.+%%*+#%%%%%%%%%%%#*#%%%%%%%%%%%%++#%%%%%%%#######***+++++++++==+=+***++*#*****#######%%%%%%%%%%%%#.
.+%%#*#%%%%#+#%%%%%*#%%%%%%%%%%%%**#%%%%%%%**%%%%%%%%%#*#%%%%%%%%##%##***#*+*+===+*#======+=+#%%%%#.
.+%%*+#%%%%#+#%%%%#*#%%%%%+*%%%%%*#%%%%%%%#**%%%%%%%%%%#%%%%%%%%%%%-+%%%%%%%%%%%%%%%%%%#####*%%%%%#.
.+%%**#%%%%#+#%%%%%##%%%%%+*%%%%%++*=*%%%%%##%%%%%%%%%#=+%%%%%%%%%%##%%%%%%%%%%%%%%#==*+++#%%%%%%%#.
.+%%***+**##*#%%%%%*#%%%%%##%%%%%=+**#%%%%%++==++*%%%%%##%%%%%%%%%%-=%%%%%%%%%%%%%%%######*%%%%%%%#.
.+%%**%%%%##**++#%#+*%%%%%%%%%%%%%%%##%%%%%=+**##%%%%%#+=++*+*%%%%%%%%%%%%%%%%%%%%%#**+=+*%%%%%%%%#.
.+%%**#%%%%%%%%%%#*=++*#%%%%%%%%%%%%%%%%%%%###***#%%%%#*###%%%%%%%%==+===+++##%%%%%%#**+***%%%%%%%#.
.+%%*+#**=*%%%%%%%%%%%%#+++#*#%%%%%%%%%%%%%**+++=*##%%%**++=-+%%%%%#%%%#**+=+=*%%%%#==*###%%%%%%%%#.
.+%%*+#%%%%#+*%%%%%%%%%%%%%%%#*++=+##%%%%%#*#%%%%#***+*+#+*#%%%%%%%+++++=++*%%%%%%%%+=+++++-=#%%%%#.
.+%%*+*%%%%%%%%%%%#=#%%%%%%%%%%%%%%#*+++++#%%%%%%%%%%%%%%*++=++*==*%%%%%**+=++#%%%%%+#%%%%%%%%%%%%#.
.+%%#+*#%+*%%%%%%%%%%#*++#%%%%%%%%%%%%%%%%#++#%%%%%%%%%%%=+*%%%%%****+====%%%%%%%%%%======*==**%%%%.
.+%%#**#*=+#**#%%%%%%%%%%%%%*+#%%%%%%%%%%%%+*%%%%%%%%%%%%%##%%%%*+%%%%%%#*%%%%%%%%%%%%%%%#*+=+=*%%%.
.+%%%**##=+##*##+=*#%%%%%%%%###==+*#%%%%%%%#%%%%%%+#%%%%%+#*%%%%%#%%%%%#+*%%%%%%%%%#+*+*+=+*%%%%%%%.
.+%%%%%%%+****#*+=#*++*%%%%%#+#%%%%#=+=*#%#++#%%%%*+#%%%%%%%%%%%*=+%%%%%#*%%%%%%%%%%%%%#*++*=+=*%%%.
.+%%%%%%%%%#**#*++*++###+=###+#%%%%%%%%#*++=*%%%%%+*#%%%%%%%%%%%%%#%%%%#++*#%%%%%%%%=+++**##%%##%%%.
.+%%%%%%%%%%%%%*#**++#*+=*#*+=*#%%%%%%%%%%%%#%%%%%##%%%%%%%%%%%%*=+%%%%%#+==+===+##%%%#**=+=-=-*%%%.
.+%%%%%%%%%%%%%%%%#++#+++#++*#**=*##%%%%%%%**#%%%%+=#%%%%%%%%%%%##%%%%%%%%%%%%#**+-++=*##%%%%*+*%%%.
.+%%%%%%%%%%%%%%%%%%%#+***+*##*++#**=+*#%%#=*%%%%%%%%%%%%+=#%%%%*=+%%%%%%%%%%%%%%%%%#***+=*+=**#%%%.
.+%%%%%%%%%%%%%%%%%%%%%%#*****+*#*+*##**++%##%%%%%%%%%%%%%*#%%%%##%%%%%%%%%%%%%%%%%%=+*##%#*++-+%%%.
.+%%%%%%%%%%%%%%%%%%%%%%%%%%*=+*#*+***+=**#*++*#%%%%%%%%%+*%%%%%*=+%%%%%%%%%%%%%%%%%*++-+=++*#%%%%%.
.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**+*#*+****++*#**=+##%%%%%##%%%%%###%%%%*=+**%%%%%%%%###%%#*+=++*%%%.
.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****#*+***#*+**##*++#%%*=#%%%%#*+%%%%%#*+-+=+*#%%%#+++++*%#%##%%%.
.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+**#*=+*#*+=+##*+=+##%%%%***%%%%*++%%%#*+=+=***%#*++=**=#%%%.
.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+*#*+=*#**=+*###*++*##**%%%%%%%%%%%%%%%##====*##%##**%%%.
.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+**#*=*###++**##*=+=*#%%%*=*%%%%%%%%%%%%#**+==+**#%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=+*#*++*##*=+**##*==#+#%#%%%%%%%%%%+*++*#%##*=+%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+=*##+-++##++=*#%#+==++#%%%%%%%%%%#++++=+#%%%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+*##*+++#%#+**+#%#+-*+*%%%%%+=++#%##==+#%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++*%*+++##%*+#*+#%##+==+%%#*===+##%%%%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+=*%%*=++#%#+=+=*%%#=+++#%%#*+***#%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*==*#%*+==+%%*==-=*%%#+++#*%%%++%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**+=#%%=#*##%#+==+*%%%*=+++*%%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=##%%**++*%%#++=+*%%#*+#%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+-=+#%*+-#=*%#+===+#%%%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++=*%%%+++-*%%#++=+%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=#+*%%*++++*%##%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=++#%#+===*%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++=+###**%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++=+*#%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*=*%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:
.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:
..---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.