public final class IntStack {
    private final int[] elements;
    private int size;

    public IntStack(int capacity) {
        if (capacity <= 0) {
            throw new IllegalArgumentException("nonpositive capacity");
        }
        elements = new int[capacity];
    }

    public void push(int value) {
        if (size == elements.length) {
            throw new IllegalStateException("full stack");
        }
        elements[size] = value;
        size++;
    }

    public int pop() {
        if (size == 0) {
            throw new IllegalStateException("empty stack");
        }
        size--;
        return elements[size];
    }

    public int size() {
        return size;
    }
}
