#arc049d. [arc049_d]すわっぷしまーす
[arc049_d]すわっぷしまーす
问题
高桥君在旅行中参观了一棵奇怪的完全二叉树,它被称为"Swap-Tree"。
"Swap-Tree"是一棵高度为、叶子节点数量为的完全二叉树。叶子节点上按照从左到右的顺序标有数字。
此外,对于非叶子节点,定义了一个属性叫做"位置",在第层从上到下的第个位置,其位置编号为。
另外还定义了一个操作,这个操作的作用是找到位置为的节点,并交换其左右子树。
"Swap-Tree"可以处理以下两种类型的查询:
类型1:给定,找出从左到右第个叶子节点上的数字。
类型2:给定,按照顺序执行${\\rm swap}(a), {\\rm swap}(a+1), {\\rm swap}(a+2), ..., {\\rm swap}(b)$这些操作。
高桥君回到家后,也想自己制作一棵"Swap-Tree",但是发现很难,所以决定由你来制作。
具体来说,给定和个查询,请你构建一棵能够处理这些查询的"Swap-Tree"。
输入
输入通过标准输入给出,格式如下:
:
- 第行为两个整数和,以空格分隔。
- 接下来的行中,描述了个查询。其中第行包含三个整数、、,以空格分隔。
- 当时,表示为类型1的查询,其中对应问题描述中的,而必定为。
- 当时,表示为类型2的查询,其中和分别对应问题描述中的和。
输出
对于每一个类型1的查询,输出查询结果。每次输出后换行。
示例1
3 10
2 5 5
1 1 0
1 2 0
1 3 0
1 4 0
2 1 3
1 2 0
1 3 0
1 5 0
1 6 0
输出示例1
1
2
4
3
8
5
4
3
在这个示例中,有两个类型2的查询。
第一个类型2的查询之后,"Swap-Tree"的结构如下图所示:
第二个类型2的查询之后,"Swap-Tree"的结构如下图所示: