시간 여행
시간 제한1초메모리 제한128 MB
문제 추가, 최근 문제 제거, 이전 질의 시점으로의 되돌리기 연산을 처리하며 매번 목록의 마지막 원소를 출력한다.
문제
현수는 코딩 연습 시간을 늘리려고 타임 머신을 샀다. 매 순간 현수는 다음 두 가지 중 하나를 한다.
- 타임 머신을 쓰지 않고 평소처럼 문제를 푼다.
- 과거의 어떤 시점으로 시간 여행을 한다.
미래로는 갈 수 없고, 과거로 돌아가면 그 지점에서부터 새로운 미래가 다시 시작된다.
현수는 자신이 푼 문제들을 푼 순서대로 목록에 기록한다. 과거로 돌아가면 그 시점 이전까지 기록해 둔 문제 목록만 남는다.
현수는 매 순간 목록에서 가장 최근에 푼 문제의 번호를 알고 싶어 한다. 목록이 비어 있으면 을 출력한다.
현수는 자신의 타임라인에서 순서대로 일어나는 ()개의 쿼리 을 처리한다. 각 쿼리는 한 줄로 주어지며, 문자 ('a', 's', 't' 중 하나)로 시작한다.
- 가 'a'이면 뒤에 공백과 정수 ()가 온다. 현수는 문제 번호 를 풀고 목록의 맨 뒤에 기록한다.
- 가 's'이면 현수는 목록에서 가장 최근에 기록한 문제 하나를 지운다.
- 가 't'이면 뒤에 공백과 정수 가 온다. 현수는 번째 쿼리를 처리하기 직전 상태로 시간 여행한다. 즉, 번째 쿼리까지 처리한 뒤의 목록으로 되돌아간다. 미래로는 갈 수 없으므로 는 현재 쿼리의 번호 이하이다.
각 쿼리 를 처리한 뒤, 그 시점에 목록에 남아 있는 가장 최근에 푼 문제의 번호를 출력하라. 목록이 비어 있으면 을 출력한다.
예를 들어 쿼리를 순서대로 'a 5', 'a 8', 's', 't 2', 'a 9'로 처리하면 목록은 로 바뀌고, 출력은 차례로 가 된다. 여기서 't 2'는 2번째 쿼리를 처리하기 직전(= 1번째 쿼리까지 처리한 뒤)의 상태인 로 되돌아간 것이다.
입력
첫째 줄에 쿼리의 개수 이 주어진다.
둘째 줄부터 번째 줄까지, 각 줄에 쿼리 가 하나씩 주어진다. 각 쿼리는 'a ', 's', 't ' 중 한 가지 형식이다.
출력
각 쿼리 를 처리한 뒤, 목록에 남아 있는 가장 최근에 푼 문제의 번호를 한 줄에 하나씩 출력한다. 가장 최근에 푼 문제가 없으면 을 출력한다.