#467. 选数异或

选数异或

题目描述

给定 nn 个正整数 a[i]a[i],你需要统计有多少个不同的子序列,它们所有元素的异或值(即按顺序异或每个元素)恰好为 xx

由于答案可能很大,请输出结果对 998244353998244353 取模。

异或运算说明

异或(符号为 ⊕)是位运算的一种,具有以下性质:

  • 11=01 \oplus 1 = 0
  • 10=11 \oplus 0 = 1
  • 00=00 \oplus 0 = 0

子序列说明

子序列是指从原始序列中选择若干个元素,并保持它们的原有顺序。

输入格式

第一行两个正整数 n,xn, x:表示数组长度和目标异或值。

第二行 nn 个正整数 aia_i:表示数组中的元素。

1n1051 \le n \le 10^5

0ai630 \le a_i \le 63

0x630 \le x \le 63

输出格式

一个整数,表示异或值为 x 的子序列个数,对 998244353 取模。

样例输入

2 0
2 2

样例输出

2

说明

有两种合法的子序列:

  • 不选择任何元素:空子序列,异或值为 00
  • 选择两个 2222=02 \oplus 2 = 0

因此答案为 22