#355. 表格填充

表格填充

题目描述

Vadim 喜欢用整数填充正方形表格。但今天他想出了一个有趣的方法!以 2×22 \times 2 的表格为例,行从上到下编号,列从左到右编号。我们在左上角单元格放置 11,右下角放置 22,左下角放置 33,右上角放置 44。这就是他需要的全部乐趣!

幸运的是,Vadim 有一个大小为 2n×2n2^n \times 2^n 的表格。他计划用 1122n2^{2n} 的整数按升序填充它。为了填充这么大的表格,Vadim 会将其分成 44 个相等的正方形子表格,先填充左上角的子表格,然后是右下角的子表格,接着是左下角的子表格,最后是右上角的子表格。每个较小的子表格会继续被分割成更小的子表格,直到分割成 2×22 \times 2 的表格,并按照上述顺序填充。

现在 Vadim 迫不及待要开始填充表格了,但他有 qq 个两种类型的问题:

  1. 位于第 xx 行第 yy 列的单元格中的数字是多少;
  2. 数字 dd 位于哪个单元格坐标中。

请帮助回答 Vadim 的问题。

输入格式

第一行包含一个整数 nn,描述表格的大小。

第二行包含一个整数 qq——问题的数量。

接下来的 qq 行描述每个问题,格式如下:

  • -> x y —— 询问位于第 xx 行第 yy 列的单元格中的数字;
  • <- d —— 询问数字 dd 所在的单元格坐标。

输出格式

对每个问题,输出一行答案。

输入输出样例

2
5
-> 4 3
<- 15
<- 4
-> 3 1
-> 1 3
1
8
-> 1 1
-> 1 2
-> 2 1
-> 2 2
<- 1
<- 2
<- 3
<- 4
7
2 3
1 2
9
13
1
4
3
2
1 1
2 2
2 1
1 2

说明/提示

对于50%50\%的数据1n101 \le n \le 10

对于100%100\%的数据1n301 \le n \le 30, 1q200001 \le q \le 20\,000, 1x,y2n1 \le x, y \le 2^n, 1d22n1 \le d \le 2^{2n}

第一个样例的填充表格如下: