public static Integer[] reverse(Integer[] a) {
    ArrayStack S = new ArrayStack(a.length);
    Integer[] b = new Integer[a.length];
    for (int i=0; i < a.length; i++)
      S.push(a[i]);
    for (int i=0; i < a.length; i++)
      b[i] = (Integer) (S.pop());
    return b;
  }