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