编程题
### 问题描述
小蓝正在研究一些数字统计问题。有一天他突然看到了一个这样的问题,将区间 $[L..R]$ 中的所有整数用 $M$ 位二进制数表示(允许出现前导 0)。现在将这些数中的每一个作如下变换,从这个数的最低两位开始,如果这两位都是 0,那么 $X=1$,否则 $X=0$。现在将这两位删去,然后将 $X$ 放在原来最低位的位置上。重复这个变换直到这个数只剩下一位为止。
例如 $01001$ 的变换过程如下: $01001\rightarrow 0100\rightarrow 011\rightarrow 00\rightarrow 1$。
现在的问题是变换后的所有数中,值为 $Y$($Y$ 为 $0$ 或 $1$)的有多少个?小蓝不会了,他想让你帮助他完成这个问题。
### 输入格式
输入文件包含多组测试数据。
第一行,一个整数 $T$,表示测试数据的组数。
每组测试数据包含两行,格式如下:
第一行,两个整数 $M$ 和 $Y$。
第二行,两个 $M$ 位二进制数 $L$ 和 $R$。
### 输出格式
对于每组测试数据,输出一行,一个二进制数,表示该组测试数据中 $[L..R]$ 中的所有整数变换后的值为 $Y$ 的个数。这里的二进制数不允许出现前导 $0$。
### 样例输入
```text
1
3 1
001 101
```
### 样例输出
```text
11
```
### 评测数据规模
对于 $20\\%$ 的数据, $1\leq M\leq 16$。
对于 $40\\%$ 的数据, $1\leq M\leq 32$。
对于 $100\\%$ 的数据, $1\leq M\leq 200$, $1\leq T\leq 50$。