#2798. AND operation

AND operation

题目描述

对于一个数字x\red{x,}我们定义fx\red{f_x}表示有多少个数字i(0<=i<=x)\red{i(0<=i<=x)}满足x&i=0\red{x\&i=0}

现在需要计算i=ljrjfi\red{\sum_{i=l_j}^{r_j}{f_i}}

每一个数据点包含多组测试数据。

输入格式

第一行包含一个数字T\red{T,}表示数据组数。

接下来T\red{T}行,i+1\red{i+1}行两个数字li\red{l_i,}ri\red{r_i,}表示每一组测试数据。

输出格式

一共T\red{T}行,第i\red{i}行代表每第i\red{i}组数据的答案。

样例

输入样例

5
1 2
3 5
2 4
4 6
7 8

输出样例

3
7
7
8
9

提示

样例说明

对于最后一组数据:f7=1\red{f_7=1(}0\red{0)},f8=8\red{f_8=8(}0,1,2,3,4,5,6,7\red{0,1,2,3,4,5,6,7)},所以它应该输出 9\red{9 }

数据范围

对于30%\red{30\%}的数据,保证:1<=i=1n(rili)<=106\red{1<=\sum_{i=1}^{n}{(r_i-l_i)<=10^6}}

对于60%\red{60\%}的数据,保证:1<=i=1n(rili)<=107\red{1<=\sum_{i=1}^{n}{(r_i-l_i)<=10^7}}

对于100%\red{100\%}的数据,保证:1<=T<=104\red{1<=T<=10^4,}1<=li<=ri<=2×107\red{1<=l_i<=r_i<=2\times 10^7}

本题读入量较大,请使用较快读入方式。

对于这个问题的求和,需要使用前缀和才能顺利通过本题。