boolean equiv(State prev) {
    if (this.taken != prev.taken) {
      return false;
    }
    if (this.unsure != prev.unsure) {
      return false;
    }
    if (!this.conf.equiv(prev.conf)) {
      return false;
    }
    if (this.history.size() != prev.history.size()) {
      return false;
    }
    for (int i = 0; i < this.history.size(); i++) {
      Conf curr1 = this.history.get(i);
      Conf prev1 = prev.history.get(i);
      if (!curr1.equiv(prev1)) {
        return false;
      }
    }
    return true;
  }
boolean equiv(State prev)