import java.util.*;
// Simple Java array-based stack template class.
public class Stack<T>
{
private Vector<T> data; // Should be T[] data;, but Java forbids it.
private int top_elt;
// Create an empty stack of a given size.
public Stack(int size)
{
data = new Vector<T>(size);
data.setSize(size);
top_elt = -1;
}
// Add an element to the stack. Note that you must send a pointer,
// and the stack actually stores the pointer.
public void push(T e)
{
data.set(++top_elt, e);
}
// Pop the stack and return the top item pointer. If the stack is
// empty, return the null pointer.
public T pop()
{
if(empty()) return null;
else return data.get(top_elt--);
}
// Return the top item pointer. If none, return the null pointer.
public T top()
{
if(empty()) return null;
return data.get(top_elt);
}
// Tell if the stack is empty.
public Boolean empty() { return top_elt == -1; }
}