小蓝的二进制询问
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小蓝有 t 组询问,每次给定两个数字 l,r 你需要计算出区间  中所有整数在二进制下1的个数之和。由于结果特别大,你只需要计算出结果模998244353之后的值即可。

输入描述:

第一行输入一个正整数 t 表示询问组数。
接下来每行两个整数 l,r 。
\left ( 1\leq t\leq 10^{5} \right )
\left ( 1\leq l\leq r\leq 10^{18} \right )

输出描述:

每行输出一个整数表示答案。
示例1

输入

复制
1
1 5

输出

复制
7

说明

1~5的二进制下分别是1 10 11 100 101共有7个1