시간 여행

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

현수는 코딩 연습 시간을 늘리려고 타임 머신을 샀다. 매 순간 현수는 다음 두 가지 중 하나를 한다.

  1. 타임 머신을 쓰지 않고 평소처럼 문제를 푼다.
  2. 과거의 어떤 시점으로 시간 여행을 한다.

미래로는 갈 수 없고, 과거로 돌아가면 그 지점에서부터 새로운 미래가 다시 시작된다.

현수는 자신이 푼 문제들을 푼 순서대로 목록에 기록한다. 과거로 돌아가면 그 시점 이전까지 기록해 둔 문제 목록만 남는다.

현수는 매 순간 목록에서 가장 최근에 푼 문제의 번호를 알고 싶어 한다. 목록이 비어 있으면 $-1$을 출력한다.

현수는 자신의 타임라인에서 순서대로 일어나는 $N$ ($1 \le N \le 80{,}000$)개의 쿼리 $Q_1, Q_2, \dots, Q_N$을 처리한다. 각 쿼리는 한 줄로 주어지며, 문자 $c$('a', 's', 't' 중 하나)로 시작한다.

  • $c$가 'a'이면 뒤에 공백과 정수 $K$ ($1 \le K \le 1{,}000{,}000$)가 온다. 현수는 문제 번호 $K$를 풀고 목록의 맨 뒤에 기록한다.
  • $c$가 's'이면 현수는 목록에서 가장 최근에 기록한 문제 하나를 지운다.
  • $c$가 't'이면 뒤에 공백과 정수 $K$가 온다. 현수는 $K$번째 쿼리를 처리하기 직전 상태로 시간 여행한다. 즉, $K-1$번째 쿼리까지 처리한 뒤의 목록으로 되돌아간다. 미래로는 갈 수 없으므로 $K$는 현재 쿼리의 번호 이하이다.

각 쿼리 $Q_i$를 처리한 뒤, 그 시점에 목록에 남아 있는 가장 최근에 푼 문제의 번호를 출력하라. 목록이 비어 있으면 $-1$을 출력한다.

예를 들어 쿼리를 순서대로 'a 5', 'a 8', 's', 't 2', 'a 9'로 처리하면 목록은 $[5] \to [5, 8] \to [5] \to [5] \to [5, 9]$로 바뀌고, 출력은 차례로 $5, 8, 5, 5, 9$가 된다. 여기서 't 2'는 2번째 쿼리를 처리하기 직전(= 1번째 쿼리까지 처리한 뒤)의 상태인 $[5]$로 되돌아간 것이다.

입력

첫째 줄에 쿼리의 개수 $N$이 주어진다.

둘째 줄부터 $N+1$번째 줄까지, 각 줄에 쿼리 $Q_i$가 하나씩 주어진다. 각 쿼리는 'a $K$', 's', 't $K$' 중 한 가지 형식이다.

출력

각 쿼리 $Q_i$를 처리한 뒤, 목록에 남아 있는 가장 최근에 푼 문제의 번호를 한 줄에 하나씩 출력한다. 가장 최근에 푼 문제가 없으면 $-1$을 출력한다.