void check(Traversal &t) {
     Ans got(t.event(), t.vertex(), t.edge());
     if (!isGood_ || current_>=ans_.size() || got!=ans_[current_]) {
         if (isGood_) {
             for (size_t i=0; i<current_; ++i) {
                 std::cout <<"    correct: " <<std::setw(3) <<i <<toString(ans_[i]) <<"\n";
             }
         }
         if (current_ >= ans_.size()) {
             std::cout <<"    FAILED: past end of answer\n";
             std::cout <<"       got:     " <<toString(got) <<"\n";
         } else if (got!=ans_[current_]) {
             std::cout <<"    FAILED:  " <<std::setw(3) <<current_ <<toString(ans_[current_]) <<"\n";
             std::cout <<"       got:     " <<toString(got) <<"\n";
         } else {
             std::cout <<"    correct: " <<std::setw(3) <<current_ <<toString(ans_[current_]) <<"\n";
         }
         isGood_ = false;
     }
     ++current_;
 }