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 {
}
}