public class ArrayListStack<E> implements Stack<E> {
    private java.util.List<E> list = new java.util.ArrayList<E>();
    public boolean isEmpty() {  return this.list.isEmpty();  }
    public E peek() {  return this.list.get(this.list.size()-1);  }
    public E pop() {  return this.list.remove(this.list.size()-1);  }
    public void push(E elem) {  this.list.add(elem);  }
    public static void main(String[] args) {
        Stack<Integer> stack = new ArrayListStack<Integer>();
        for (int i = 0; i < 100; i++) {
            stack.push(i*i);
        }
        while (!stack.isEmpty()) {
            System.out.println(stack.pop());
        }
    }
}

