만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

어려운 스케줄링

시간 제한1초메모리 제한1024 MB

요약
작업을 맨 앞에 넣기, ID 오름차순 정렬, 뒤집기 명령을 순서대로 적용한 뒤 k번째로 처리되는 작업의 ID를 구합니다.
난이도

보통10점 중 5점

유형
시뮬레이션, 정렬, 배열
정답자
아직 제출이 없습니다

문제

지환이는 업무에 치여 산다. 하루에도 몇 건인지 셀 수 없을 만큼 많은 업무가 들어온다.

각 업무는 양의 정수 고유번호 pip_i (1≤pi≤N1 \leq p_i \leq N)를 가진다. 고유번호는 모두 서로 다르다.

일이 또 추가되었다. 참다못한 지환이는 스케줄링을 하는 기계 '지환봇 스케줄러'를 만들었지만, 제대로 만들지는 못한 것 같다. 지환봇 스케줄러는 기본적으로 스택 구조다. 즉, 나중에 들어간 업무가 먼저 처리되는 LIFO(Last In First Out) 방식으로 동작한다.

기본 동작 외에 지환봇 스케줄러에 내릴 수 있는 명령은 다음과 같다.

  • 0 p: 고유번호가 pp인 업무를 스케줄러에 추가한다. 별도의 명령이 없으면 새로 추가된 업무가 스케줄러의 맨 앞에 놓인다. 고유번호와 상관없이 가장 먼저 처리해야 하는 업무가 된다.
  • 1: 스케줄러에 있는 업무를 고유번호 기준 오름차순으로 정렬한다. 고유번호가 작은 업무일수록 스케줄러의 앞에 놓인다.
  • 2: 스케줄러에 있는 업무의 처리 순서를 뒤집는다. 스케줄러에 들어 있는 업무들의 처리 순서가 반대가 된다.

지환봇 스케줄러에 쓸모없어 보이는 기능이 있는 것 같지만, 지환이는 이전보다 업무를 더 효율적으로 처리할 수 있을 것으로 기대한다. 주어진 QQ개의 명령을 순서대로 처리한 뒤, kk번째로 처리해야 하는 업무의 고유번호를 구하라.

입력

첫째 줄에 업무 고유번호의 범위 NN, 명령 횟수 QQ, 그리고 kk가 주어진다. (1≤N,Q≤1000001 \leq N, Q \leq 100000, 1≤k≤1 \leq k \leq 0번 명령의 등장 횟수)

둘째 줄부터 QQ개의 줄에 명령이 한 줄에 하나씩 주어진다.

입력되는 모든 수는 정수다.

출력

모든 명령을 순서대로 적용한 뒤, kk번째로 처리하게 될 업무의 고유번호를 출력한다.

예제1

  1. 예제 1

    입력
    5 7 5
    0 1
    0 2
    0 3
    1
    0 4
    0 5
    2
    
    예상 출력
    5