using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;

class Path
{
    private Nodes[] nodes = new Nodes[512];
    private int Count = 0;

    public void AddNode(Nodes node)
    {
        nodes[Count] = new Nodes(node);
        Count++;
    }

    public Nodes Reduce()
    {
        Count--;
        Nodes temp = nodes[0];

        for (int i = 0; i < Count; i++)
        {
            nodes[i] = nodes[i + 1];
        }
        nodes[Count + 1] = null;
        return temp;
    }

    public Path FlipArray()
    {
        int j = Count;
        Nodes[] tempp = nodes;
        Nodes[] newnode = new Nodes[Count];
        Path newPath = new Path();
        for (int i = 0; i < Count; i++)
        {
            newnode[i] = tempp[j - 1];
            j--;
            newPath.AddNode(newnode[i]);
        }
        return newPath;
    }

    public Nodes getFinalDest()
    {
        return nodes[Count];
    }

    public int getCount()
    {
        return Count;
    }

    public Nodes getByIndex(int i)
    {
        return nodes[i];
    }

}