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