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