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 {
static class UniqueList extends RandomAccessAbstractList {
List list = new ArrayList();
Map index = new HashMap(); // position of each element
public A get(int i) { return list.get(i); }
public int size() { return list.size(); }
// couldn't come up with a better name here... add element or
// get its index if it's already there
int addOrGetIndex(A a) {
Integer i = index.get(a);
if (i == null) {
index.put(a, i = size());
list.add(a);
}
return i;
}
public boolean add(A a) {
int n = size();
return addOrGetIndex(a) == n;
}
}
abstract static class RandomAccessAbstractList extends AbstractList implements RandomAccess {
}
}