Keep XOR Low

题意翻译

给你 $n$ 个整数 $a_1,a_2,\cdots,a_n$ 和一个整数 $x$。 你需要求出 $\{1,2,\cdots,n\}$ 的一个子集 $S$,满足 $S$ 中任意两个不同的元素 $i,j$,满足 $a_i~{\rm xor}~a_j\le x$。 求选取 $S$ 的方案数,对 $998244353$ 取模的结果。 $1\le n\le 150000,0\le a_i,x< 2^{30}$

题目描述

You are given an array $ a_1, a_2, \ldots, a_n $ and an integer $ x $ . Find the number of non-empty subsets of indices of this array $ 1 \leq b_1 < b_2 < \ldots < b_k \leq n $ , such that for all pairs $ (i, j) $ where $ 1 \leq i < j \leq k $ , the inequality $ a_{b_i} \oplus a_{b_j} \leq x $ is held. Here, $ \oplus $ denotes the [bitwise XOR operation](https://en.wikipedia.org/wiki/Bitwise_operation#XOR). As the answer may be very large, output it modulo $ 998\,244\,353 $ .

输入输出格式

输入格式


The first line of the input contains two integers $ n $ and $ x $ ( $ 1 \leq n \leq 150\,000 $ , $ 0 \leq x < 2^{30} $ ). Here, $ n $ is the size of the array. The next line contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ 0 \leq a_i < 2^{30} $ ): the array itself.

输出格式


Print one integer: the number of non-empty subsets such that the bitwise XOR of every pair of elements is at most $ x $ , modulo $ 998\,244\,353 $ .

输入输出样例

输入样例 #1

4 2
0 1 2 3

输出样例 #1

8

输入样例 #2

3 6
4 2 2

输出样例 #2

7

输入样例 #3

4 0
1 1 2 2

输出样例 #3

6