#P4869. albus就是要第一个出场

albus就是要第一个出场

题目描述

已知一个长度为nn的正整数序列AA(下标从11开始), 令 S={x1xn}S = \{ x | 1 \le x \le n \}, SS 的幂集2S2^S定义为 SS 所有子集构成的集合。定义映射 $f : 2^S \to Z,f(\emptyset) = 0,f(T) = \mathrm{XOR}\{A_t\}, (t \in T)$ 。

现在albus把2S2^S中每个集合的f值计算出来, 从小到大排成一行, 记为序列BB(下标从11开始)。

给定一个数, 那么这个数在序列BB中第11次出现时的下标是多少呢?

输入格式

第一行一个数nn, 为序列AA的长度。接下来一行nn个数, 为序列AA, 用空格隔开。最后一个数Q, 为给定的数.

输出格式

共一行, 一个整数, 为QQ在序列BB中第一次出现时的下标模1008610086的值.

3
1 2 3
1
3

提示

【样例解释】

N = 3, A = [1 2 3]
S = {1, 2, 3}
2^S = {空, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
f(空) = 0
f({1}) = 1
f({2}) = 2
f({3}) = 3
f({1, 2}) = 1 xor 2 = 3
f({1, 3}) = 1 xor 3 = 2
f({2, 3}) = 2 xor 3 = 1
f({1, 2, 3}) = 0

所以

B = [0, 0, 1, 1, 2, 2, 3, 3]

【数据范围】

1 <= N <= 10,0000
其他所有输入均不超过10^9