모눈종이 접기
시간 제한1초메모리 제한32 MB
N x N 격자 종이를 아래를 위로, 오른쪽을 왼쪽으로 번갈아 반으로 접어 1 x 1이 될 때까지 접은 뒤, 생긴 기둥을 아래에서 위로 읽은 수열에서 주어진 수 X의 위치 P를 구하거나, 주어진 위치 P에 있는 수 X를 구한다. N = 2^K이고 K는 최대 31, 질의는 최대 10000개이다.
문제
정사각형 칸으로 이루어진 크기의 모눈종이가 있다. 은 2의 거듭제곱이다.
칸에는 위쪽 줄부터 차례로, 한 줄 안에서는 왼쪽에서 오른쪽으로 부터 까지 번호를 매긴다. 각 칸에는 그 칸의 번호만 적혀 있다.
이 종이를 반으로 접는 동작을 되풀이한다. 먼저 아래쪽 절반을 위쪽 절반 위로 접고, 그다음 오른쪽 절반을 왼쪽 절반 위로 접는다. 접힌 종이가 크기가 될 때까지 두 동작을 이 순서로 번갈아 수행한다.
다 접고 나면 칸은 크기의 기둥을 이룬다. 이 기둥을 맨 아래 칸부터 맨 위 칸까지 읽어서 얻은 번호의 수열을 이라고 하자. 는 수열에서의 위치를 뜻한다.
지루한 회의에 앉아 있던 개발자가 종이를 접어 이런 기둥을 만들면서 다음 두 질문의 답을 구하려고 한다.
- 1번 질문. 번호 가 주어진다. 이 번호는 수열 의 몇 번째 위치 에 있는가?
- 2번 질문. 수열 의 위치 가 주어진다. 이 위치에 있는 번호 는 무엇인가?
질문의 종류에 따라 번호 또는 위치 를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 질문의 개수 가 주어진다. 다음 개의 줄에는 각각 세 정수 , , 가 공백 하나로 구분되어 주어진다.
- 는 질문의 종류이다. 또는 이다.
- 는 종이의 크기를 정하는 지수이다. 종이의 크기는 이다.
- 는 이면 번호 이고, 이면 위치 이다.
출력
질문마다 한 줄씩, 모두 개의 줄을 출력한다. 각 줄에는 질문의 종류에 따라 위치 또는 번호 를 정수 하나로 출력한다.
제한
- , 여기서 이다.
힌트

일 때 기둥을 아래에서 위로 읽으면 이다.

일 때는 이다.