给你一个长度为 n 的正整数序列 a,和一个常数 x 。
定义 x⊕y 表示 x 异或 y。
有 q 次询问,每次询问给出一段区间 [l,r],问你这个区间中有多少二元组 (i,j) 满足 i<j∧(ai⊕aj)≤x。
输入格式
第一行两个正整数 n,x ,分别表示序列长度和给定的常数。
后面一行 n 个整数表示序列 a 。
第三行一个正整数 q 表示询问组数。
后面 q 行,每行两个正整数 l,r 表示一次询问。
输出格式
输出 q 行,每行一个整数表示答案。
样例数据
样例输入
11 4
11 4 5 1 4 1 9 1 9 8 10
5
1 4
1 9
1 9
8 10
8 10
样例输出
2
12
12
1
1
子任务
Idea:Dpair,Solution:Dpair,Code:Dpair,Data:Dpair&nzhtl1477
对于 1% 的数据,为样例。
对于另外 19% 的数据,满足 n,q≤100。
对于另外 19% 的数据,满足 n,q≤1000。
对于另外 19% 的数据,满足 q≤100。
对于另外 19% 的数据,满足 ai,x≤100。
对于 100% 的数据,满足 1≤n,ai,x≤2×105,1≤q≤106 。