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