import java.util.*;
import java.util.zip.*;
import java.util.List;
import java.util.regex.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.concurrent.locks.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.table.*;
import java.io.*;
import java.net.*;
import java.lang.reflect.*;
import java.lang.ref.*;
import java.lang.management.*;
import java.security.*;
import java.security.spec.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.math.*;
class main {
final static class SimpleStack extends RandomAccessAbstractList {
ArrayList l = new ArrayList();
int peak;
public A get(int i) { return l.get(i); }
public int size() { return l.size(); }
public A set(int i, A a) { return l.set(i, a); }
public void add(int i, A a) { l.add(i, a); checkSize(); }
public A remove(int i) { A a = l.remove(i); checkSize(); return a; }
void checkSize() {
int n = size();
if (n > peak) peak = n; // record new peak size (~actual capacity)
if (n*2 < peak) { // shrink physically when below half of peak
trimToSize(l);
peak = n;
}
}
}
static List trimToSize(List l) {
synchronized(l) {
if (l instanceof ArrayList)
((ArrayList) l).trimToSize();
}
return l;
}
abstract static class RandomAccessAbstractList extends AbstractList implements RandomAccess {
}
}