异或期望的秘密
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定正整数 l, r, y。从闭区间 [l, r] 中随机且等概率地选择一个整数 x,计算 x \oplus y\oplus 表示按位异或)的二进制表示中 1 的个数的期望值。

答案需对 10^9 + 7 取模。

输入描述:

第一行,包含一个整数 T (1\leq T\leq 2\times 10^5)

接下来 T 行,每行包含三个整数 l, r, y (1\leq l\leq r\leq 10^9 \ , \ 1\leq y\leq 10^9)

输出描述:

T 行,输出期望值对 10^9 + 7 取模的结果。
示例1

输入

复制
3
1 1 1
1 1 2
1 10 5

输出

复制
0
2
300000004

备注:

可以证明答案可以表示为一个不可约分数 \tfrac{p}{q},为了避免精度问题,请直接输出整数 \left(p \times q^{-1} \bmod M\right) 作为答案,其中 M = 10^9+7q^{-1} 是满足 q\times q^{-1} \equiv 1 \pmod{M} 的整数。
更具体地,你需要找到一个整数 x \in [0, M) 满足 x \times qM 取模等于 p,您可以查看样例解释得到更具体的说明。