--------------------------------------------------------------------------------++-++-++++++-++--+++++++++++--+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-++++++-++--+++++++++++--+++---+++++-++++++++-----------------------------+-++++++-++--+++++++++++--+++---+++++-++++++++-------------------------------------------------------------------------------------------------------++++++-++--+++++++++++--+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++-++--+++++++++++--+++---+++++-++++++++--------------------------------------------------------------------------------------------------+-++--+++++++++++--+++---+++++-++++++++------------------------------++--+++++++++++--+++---+++++-++++++++-----------------------------++--+++++++++++--+++---+++++-++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++--+++---+++++-++++++++-----------------------------+++++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---+--+-+----------++--++------------------++++++--+++++++++++++++++++++++++++--+--+-+----------++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+-+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----++--++------------------++++++--+++++++++++++++++++++++++++-----++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++------------------++++++--+++++++++++++++++++++++++++-++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------------------------------------------------------------++-++++++-++--+++++++++++--+++---+++++-++++++++-----------------------------+-++++++-++--+++++++++++--+++---+++++-++++++++-------------------------------------------------------------------------------------------------------++++++-++--+++++++++++--+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++-++--+++++++++++--+++---+++++-++++++++--------------------------------------------------------------------------------------------------+-++--+++++++++++--+++---+++++-++++++++------------------------------++--+++++++++++--+++---+++++-++++++++-----------------------------++--+++++++++++--+++---+++++-++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++--+++---+++++-++++++++-----------------------------+++++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--+-+----------++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+-+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----++--++------------------++++++--+++++++++++++++++++++++++++-----++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++------------------++++++--+++++++++++++++++++++++++++-++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----++--++------------------++++++--+++++++++++++++++++++++++++-----++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++------------------++++++--+++++++++++++++++++++++++++-++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++-+++-++--+++++++++++--+++---+++++-++++++++-------------------------------------------------------------------------------------------------------++++++-++--+++++++++++--+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++-++--+++++++++++--+++---+++++-++++++++--------------------------------------------------------------------------------------------------+-++--+++++++++++--+++---+++++-++++++++------------------------------++--+++++++++++--+++---+++++-++++++++-----------------------------++--+++++++++++--+++---+++++-++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++--+++---+++++-++++++++-----------------------------+++++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++--+++++++++++--+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++-++--+++++++++++--+++---+++++-++++++++--------------------------------------------------------------------------------------------------+-++--+++++++++++--+++---+++++-++++++++------------------------------++--+++++++++++--+++---+++++-++++++++-----------------------------++--+++++++++++--+++---+++++-++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++--+++---+++++-++++++++-----------------------------+++++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+----+-----++--++------------------++++++--+++++++++++++++++++++++++++-+----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----++--++------------------++++++--+++++++++++++++++++++++++++-----++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++------------------++++++--+++++++++++++++++++++++++++-++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------------------------------------------------+-+-++--++-++++++++--+++---+++++-++++++++--------------------------------------------------------------------------------------------------+-++--++-++++++++--+++---+++++-++++++++------------------------------++--++-++++++++--+++---+++++-++++++++-----------------------------++--+++++++++++--+++---+++++-++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++--+++---+++++-++++++++-----------------------------+++++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----++--++------------------++++++--+++++++++++++++++++++++++++-----++--++------------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++------------------++++++--+++++++++++++++++++++++++++-++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+--++--++-+----------------++++++--+++++++++++++++++++++++++++--+--++--++-+----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++-+----------------++++++--+++++++++++++++++++++++++++-++--++-+----------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------+-++--++-++++++++--+++---+++++-++++++++------------------------------++--++-++++++++--+++---+++++-++++++++-----------------------------++--++++++++++++-+++---+++++-++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++-+++---+++++-++++++++-----------------------------++++++++++++-+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++-++--++-+----------------++++++--+++++++++++++++++++++++++++--++-++--++-+----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++-+----------------++++++--+++++++++++++++++++++++++++-++--++-+----------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++--++------------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------++++++--+++++++++++++++++++++++++++------------------++++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++--++-++-+++++--+++---+++++-++++++++-----------------------------++-+++++++++++++++++---+++++-++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++---+++++-++++++++-----------------------------++++++++++++++++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++---+++++-++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++---+++++-++++++++-----------------------------++++++++++++++++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++---+++++-++++++++-----------------------------++++--+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++---+++++-++++++++-----------------------------++++++++++++++++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++++++++--+++----++-+-++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++----++-+-++++++++-----------------------------++++--+++----++-+-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++------------------------------+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---+---------------------++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++------------------++++++--+++++++++++++++++++++++++++-++--++-+----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---+---------------------++++--+++++++++++++++++++++++++++--+---------------------++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------++++--+++++++++++++++++++++++++++--------------------++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++--++-+----------------++++++--+++++++++++++++++++++++++++-++--++-+----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---+---------------------++++--+++++++++++++++++++++++++++--+---------------------++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------++++--+++++++++++++++++++++++++++--------------------++++--++++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++----------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++---+++++-++++++++------------------------------------------------------------------------------------------------------------------------------------------------------++-+++++--+++----++---++++++++------------------------------------------------------------------------------------------------------------------------------------------------+++++--+++----++---++++++++-----------------------------++++--+++----++---++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++-++++++++-----------------------------++++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++--++++--+++----+----++++++++-------------------------------------------------------------------------------------------------------------------------------------------------++++--+++----+----++++++++-----------------------------++++--+++----+----++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++---+++++-++++++++-----------------------------+++---+++++-++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++-++++++++-----------------------------++++++-++++++++-----------------------------+++++-++++++++-----------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++-----------------------------+++++++-----------------------------++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++--++++---+------------++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---+----------------------+++--+++++++++++++++++++++++++++--+----------------------+++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------+++--+++++++++++++++++++++++++++---------------------+++--++++++++++++++++++++++++++++---+------------++++++--+++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------+--+++++++++++++++++++++++++++--+------------------------+--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------+--+++++++++++++++++++++++++++-----------------------+--++++++++++++++++++++++++++++---+------------++++++--+++++++++++++++++++++++++++----------------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-+--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------+++++--+++----++---++++++++-----------------------------++++--+++----++---++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++--++++++-++++++++++++-------------------------+++--++++++-++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++-------------------------+++++++++++++++++++-------------------------+++++-++++++++++++-------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++++++-------------------------+++++++-----------------------------++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-------------------------++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++--------------------++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------+++--+++++++++++++++++++++++++++--------------------++++--++++++++++++++++++++++++++++---++---------+++++++++++++++++++++++++++++++++++++--------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++----------+++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------+--+++++++++++++++++++++++++++--------------------++++--++++++++++++++++++++++++++++---++---------+++++++++++++++++++++++++++++++++++++--------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++----------+++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-+--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++----+----++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++--++++++-++++++++++++-------------------------+++--++++++-++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++-------------------------+++++++++++++++++++-------------------------+++++-++++++++++++-------------------------++-+-++++++++---------------------------------++++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++++++-------------------------+++++++-----------------------------++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-------------------------++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++--+++++++++++++++++++-------------------------+++--+++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++-------------------------+++++++++++++++++++-------------------------+++++-++++++++++++-------------------------++-+-++++++++----------------------------------+++++++--------------------------------++++++++-----------------------------+-++++++++------------------------------++++++++-----------------------------++++++++++++-------------------------+++++++-----------------------------++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-------------------------++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++--++++++++++++++++++++++++++++---++---------+++++++++++++++++++++++++++++++++++++---++---------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---++---------+++++++++++++++++++++++++++++++++++++---++---------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-+--++++++++++++++++++++++++++++--+++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------+--+-+--+-----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++------------++++++--+++++++++++++++++++++++++++----------+++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++--+-+--+-----+++++++++++++++++++++++++--+-----++++++++++++++++++++++-+--+-----+++++++++++++++++++++-+--+-----++++++++++++++++++++++--+-----+++++++++++++++++++++--------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----+++++++++++++++++++++----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----+----++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+-+--+-----+++++++++++++++++++++++++--+-----++++++++++++++++++++++-+--+-----+++++++++++++++++++++-+--+-----++++++++++++++++++++++--+-----+++++++++++++++++++++--------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----+++++++++++++++++++++----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++++++++++++-------------------------+++++++++++++++++++-------------------------+++++-++++++++++++-------------------------++-+-+-++---------------------------------------++--------------------------------------++---------------------------------+-+-++----------------------------------+-++---------------------------------++++++++++++--------------------------++---------------------------------++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-------------------------++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++------------------------++++++++++++++++++++------------------------+++++-+++++++++-++-------------------------++---+-++---------------------------------------++--------------------------------------++---------------------------------+-+-++----------------------------------+-++---------------------------------++++++++++++--------------------------++---------------------------------++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-------------------------++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++--+++++++++++++++++++++++++++-----------++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++----+++++++++++++++++++++++++++++++++++++---++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++----+----------+++++++++++++++++++++-+----------++++++++++++++++++++-+----------+++++++++++++++++++-+----------++++++++++++++++++++----------+++++++++++++++++++----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------+++++++++++++++++++------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++--+-+++++++++++++++++++++++++++++++++++++-+-++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++++++++++++++++++++++++++++++++++-++++++++++++++++++++++++++++----+----------+++++++++++++++++++-+-+----------++++++++++++++++++++-+----------+++++++++++++++++++-+----------++++++++++++++++++++----------+++++++++++++++++++----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------+++++++++++++++++++------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++----+----------+++++++++++++++++++---+----------++++++++++++++++++++-+----------+++++++++++++++++++-+----------++++++++++++++++++++----------+++++++++++++++++++----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------+++++++++++++++++++------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++-++++++++-----------------------------+++++-++++++++-----------------------------++-------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------++++++++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++-++++++++-----------------------------++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-------------------------++----------------------------------------------------------------------------++----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-++++++++++++--+--++++-----------------+-++---------------------------------+++++++++++++++++++++++++++++++++++++-++---------------------------------++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-----++++----------------++--+--++++-------------------------------------------------------------------++++++++----------------+--++++------------------++++-----------------++++----------------++++----------------+++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-++++++++++--------------++-++++++++++-----------------------------------------------------------------++++++++++--------------+++++++++--------------++++++++--------------+++++++--------------++++++--------------+++++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-+++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------++++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++--+++++++++--------------++-++++++++++-----------------------------------------------------------------++++++++++--------------+++++++++--------------++++++++--------------+++++++--------------++++++--------------+++++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++------------------------------------++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++-----++++----------------++--+--++++-------------------------------------------------------------------++++++++----------------+--++++------------------++++-----------------++++----------------++++----------------+++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++-+----------------------------------+++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++---++++++++--------------++-++++++++++-----------------------------------------------------------------++++++++++--------------+++++++++--------------++++++++--------------+++++++--------------++++++--------------+++++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++--------+------+++++++++++-------+------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------+++++++++++------+++++++++++-----++++++++++++---+++++++++++---++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++-------+++-----+++++++++++------+++-----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----+++++++++++------+++++++++++-----++++++++++++---+++++++++++---++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--++++++++++++++++++++++++++++++--+-----+++++++++++++++++++++-+--+-----++++++++++++++++++++++--+-----+++++++++++++++++++++----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----+++++++++++++++++++++----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+----------+++++++++++++++++++-+----------++++++++++++++++++++----------+++++++++++++++++++----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------+++++++++++++++++++----+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------+++++++++++++++++++--+-----+++++++++++++++++++++-----------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------++++++++++++++++++++----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++++++++++++++-----------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----+++++++++++++++++++++--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------+--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------+++++++++++++++++++---+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--+++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++++++++++-----------------------------------------------------------------++++++++++--------------+++++++++--------------++++++++--------------+++++++--------------++++++--------------+++-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++++++--------------++-++++------------------++++-----------------++++----------------++++----------------+++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----+++++++++++------+++++++++++-----++++++++++++---+++++++++++---++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------+++++++++++------+++++++++++-----++++++++++++---+++++++++++---+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++----------------++++----------------++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------++++++--------------++++++--------------+++-------------------------------------------------------------------+------------------------------+-----------+----------+-----------------------------------------------------------------++++++--------------+---------------------------------------------------------------------+-----------------------------+++---------+++---------++--------------------------------------------------------------------------------------------------------------------------------------------------------------------++++--------++++--------+++------------------------------------------------------------------------------------------------------------------+-----------------------------+++++-------+++++-------++++---------------------------------------------------------------------++++++++++-----++++++++++++---+++++++++++---+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-++++++++++++++++++++++++++++++++++++++++++++--------------+++++++++++++++++++++++++++++++++++++----+++++----+++++---+++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---+++++----+++++---+++++--+++++++++++++++++++++++++++++++-------++----------------------------------------------------------------+---------------------------------------------------------------------------------------------------++----+------------------+++++---+++++--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-+++++++++++++++++-++++++++++++++++++++--++++++++-------------------------++++++----