小V的序列
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

VMware实习生小V有一个序列。
她会多次告诉你一个数x,并且询问你序列中是否存在数字y与x相似。
x,y相似当且仅当x xor y的二进制表示中1的个数小于等于3个。
为了减小输入文件的体积,序列采取本地生成的方式。迭代算法为:
uint64_t G(uint64_t x) {
    x^=x<<13;
    x^=x>>7;
    x^=x<<17;
    return x;
} 

输入描述:

第一行输入,表示序列的长度和询问的数目。
接下来一行有一个数字,表示序列中的元素为
接下来m行,每行有一个数字,表示一组询问。

输出描述:

为了避免输出文件过大,记第i组询问的答案为r_i,当结果为存在时,否则(询问下标从0开始)。请输出
示例1

输入

复制
5 5
5188246119645849747
12176634967126635378
1502089823584721476
10167816335444882972
5197253318900460179
10311929324497483284

输出

复制
23