import java.lang.Object;


public class Path
{
	private Position[]   Positions;
	private int          size;
	private int          count;


	public Path(int _size)
	{
        size    = _size + 1;    // extra position for starting
	    count   = 1;            // position of (-1,-1) at index 0
	    Positions = new Position[size];
		for (int c=0; c<size; c++)
		{
	    	Positions[c] = new Position(-1, -1);
	    }
    }



	public int Add(Position _to)  // returns number of positions remained
	{
	    Positions[count] = _to;
	    count++;
	    return (count - 1);
	}


	public int UndoAdd()          // returns number of positions remained
	{
	    Positions[count] = new Position(-1,-1);
	    count--;
	    return (count - 1);
	}


	public void Clear()
	{
		for (int c=0; c<size; c++)
		{
	    	Positions[c] = new Position(-1, -1);
	    }
	    count   = 1;
    }


	public Position Get(int _index)
	{
	    if ( (_index > 0) && (_index < size) )   return Positions[_index + 1];
	    else            return null;
	}


	public Position Last()
	{
	    if (count>=1)   return Positions[count - 1];
	    else            return null;
	}


	public Position BeforeLast()
	{
	    if (count>=2)   return Positions[count - 2];
	    else            return null;
	}


	public int Count()
	{
	    return count - 1;
	}


	public int Size()
	{
	    return size;
	}


	public boolean Full()
	{
	    return (count == size);
	}


}

