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