「EZEC-2」异或

题目描述

有 $T$ 组询问,每次给定两个正整数 $n,l$, 你需要构造一个长度为 $l$ 的正整数序列 $a$(编号从 $1$ 至 $l$), 且满足 $\forall i\in[1,l]$,都有 $a_i\in[1,n]$。 求: $$\sum_{i=1}^l\sum_{j=1}^{i-1}a_i\oplus a_j$$ 的最大值。 为了避免答案过大,对于每组询问,只需要输出这个最大值对 $10^9+7$ 取模的结果。

输入输出格式

输入格式


第一行一个整数 $T$,表示数据组数。 接下来第 $2$ 行到第 $T+1$ 行,每行两个整数 $n,l$ ,分别代表 $a_i$ 的最大取值与 $a$ 的长度。

输出格式


共 $T$ 行,每行一个整数,对应每组询问的答案对 $10^9+7$ 取模的结果。

输入输出样例

输入样例 #1

1
2 3

输出样例 #1

6

输入样例 #2

2
114 514
1919 180

输出样例 #2

8388223
16580700

说明

**【样例解释 #1】** 当 $n=2,l=3$,$a$ 取 $\{1,2,1\}$ 的任一排列时可以得到最大值,为 $(1\oplus2)+(1\oplus1)+(2\oplus1)=6$,易证明此时原式有最大值。 --- **【数据规模与约定】** | 测试点编号 | $T\le$ | $n\le$ | $l\le$ | | :----------: | :----------: | :----------: | :----------: | | $1\sim5$ | $1$ | $10$ | $5$ | | $6$ | $5\times 10^5$ | $10^{12}$ | $2$ | | $7$ | $5\times 10^5$ | $10^{12}$ | $3$ | | $8\sim10$ | $5\times 10^5$ | $10^{12}$ | $10^5$ | 对于 $100\%$ 的数据,满足 $1\le T\le 5\times10^5$,$1\le n\le 10^{12}$,$2\le l \le 10^5$。 --- **【提示】** 1. 「$\oplus$」是按位异或符号。如果您不知道什么是按位异或,可以参考[这里](https://oi-wiki.org/math/bit/#_1)。 2. 取模是一种运算,$a$ 对 $b$ 取模代表将 $a$ 赋值为 $a$ 除以 $b$ 所得到的余数。 在 C++ / Python 中的取模符号为 `%`,在 Pascal 中的取模符号为 `mod`。 3. $\sum$ 是求和符号。如果您不知道什么是 $\sum$ 符号,可以参考[这里](https://baike.baidu.com/item/∑/1233796?fr=aladdin)。 4. 请注意数据的读入输出对程序效率造成的影响。