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