小苯的无限数组
题号:NC305091
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有一个无限长的升序数组 a=\{1,2,3,...\},即 a_i=i,现在小红对 a 执行了 k 次操作,具体来说:

\hspace{23pt}\bullet 每次操作,小红都会将数组的奇数下标的元素全部删除,只保留偶数下标的元素,同时剩余的元素如果左侧有空位就会左移,直到补满所有空位。
\hspace{23pt} 例如第一次操作后,a 数组会从 \{1,2,3...\} 变为 \{2,4,6...\}

\hspace{15pt}在所有操作执行完后,小苯想知道 a_n 的值是多少,你的任务就是帮他求出所有 k 次操作执行完后 a_n 的值。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\ (1\leqq T\leqq 100) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行两个整数 n, k\ (1 \leqq n \leqq 10^5, 0 \leqq k \leqq 10),分别表示询问的下标和操作的次数。

输出描述:

对于每组测试数据:
\hspace{15pt}在单独的一行输出一个整数表示所有操作执行完后 a_n 的值。
示例1

输入

复制
2
4 1
3 0

输出

复制
8
3

说明

\hspace{15pt}对于第一组测试数据,a=\{1,2,3...\},执行 1 次操作后 a=\{2,4,6...\},此时 a_4=8,因此输出 8