%%%%%?????????*********++++++++++++===================--------------------------
%%%%%?????????**********+++++++++++++++++=============--------------------------
%%%%??????????*********++++++++++++=++================--------------------------
%%%%%????????**********++++++++++++==================---------------------------
%%%%?????????*******++*+++++++++++==================----------------------------
%%%%?????????**********+++++++++++=================-----------------------------
%%??????????**********++++++++++=+=================-----------------------------
%%??????????************++++++++===================-----------------------------
%%??????????**********++++++++++====================----------------------------
%%??????????**********++++++++++===================-----------------------;-----
%%??????????***********+++++++++==================------------------------------
%??????????************+++++++++==================------------------------------
%%??????????***********++++++++===================------------------------------
%%?????????*************++++++++===================-----------------------------
%??????????*************+++++++++==================--==-------------------------
%??????????*************+++++++++===+==============---=-------------------------
%??????????*************+++++++++++++=================--------------------------
%??????????**********+**++++++++++=++++===============--------------------------
%??????????**********+**+++++++++++====================-------------------------
%??????????*************+++++++++++=====================------------------------
%?????????***************++++++++++====================-------------------------
%??????*******************+++++++++=======================----------------------
%??????**************+*+*??**+++++++=====+================----------------------
%?????***************++**??%?+***+++=======================---------------------
??????*****************+*??%?*??*+++++=+++=================---------------------
??????****************+**????*??*++++++++?++=================-----==------------
??????******************??**?*?????****+*?*+++===========+++=====+*+=-----------
??????******************%%*?%????%????????*???***+======+???===+?*=======+++===-
?????************************?*?????*?*???***?????*==+??*???====*****??*????*??+
????********************++*+++++++****?*????????+?*++*??????+===?**?*+*??**??**+
????**********************+++++++++++*?++++++*****++=*??????+==+?+*??*?*???*??*+
????**********************++++++++++++*++===+++*?+====++++++====*+*+???*??*++?*+
%???********************??????+++*+++****+=====+*+==============+*+====**+=====-
%???********************?????*++*???????++++=====================*+===+*+==-----
%???********************??*???+++?????**????+==++++====+*===================----
%???********************??++*++++**?*?**??*?+==*???*??+*?+*+==+====+*=========--
%???********************?%*+++++++++++**+*?*==+*?***???**???*???*==+?+==+++=++==
????***********************++++++++++*?+=======+***???*?*???*??*+==+??**???*?*+*
?????********************++++++++++++++============*?++***??*?*====*?+*?*****++?
?????******************+*+++++++++++==============+?+======+++=====******?**?++?
??????*****************++++++++++++++========================-=----=**=========+
???????******************++++++++++=====================-======-=--=*+=---------
????????****************++++++++++===================---====--------=-----------
*???????****************++++++++++===================---==----------------------
=*???????****************++++++++=+====================--=----------------------
+????????****************+++++++++===============-------------------------------
+++=*????****************++++++++++=============--==----------------------------
*++==+*???****************+++++++++============---------------------------------
**+++==*???******?**********+++++++===========--==--=---------------------------
****++==*???*****??********++++++++===============-------=----------------------
*****++==????****??**********+++++++===============-----------------------------
******+++*==******??*********++++++++=============------------------------------
********++====+****??********+++++++++++=============---------------------------
*********+====-=+**?**********+++++++++++============---------------------------
**********+======?*+***********++++++++++===========----------------------------
***********++*====--=+**********+++++++++===========----------------------------
**********?*=*%*====---+*********++++++++++==========---------------------------
************++%?*====----+?*******+++++++++============-----------==------------
*************+*+=======--*?=+******++++++++++=================--=====-----------
*************+=+++==-==--=--;-=+*****++++++++++=====================----========
**************===+++==--------;;-=+***+++++++++++====================-==========
***************===+*?*=---==----;;;+?*++++++++++++++============================
***************+===?***====**=-;;-;+*;;-=++++++++++++===========================
****************===+?***+===??*+-;;;;;;::::;-==++++++++++=======================
********+*******+===**??*+==*=--;--;;;;;;;:::::=?+====++++==++==================
******++*********+==+?*++======---;;;;;;;;;;;;:-*:,,::;;--=++=++++=====+=======+