#18477. 数组

数组

暂无测试数据。

从前有个熊孩子,他有一个数组 $a$,下标从 $0$ 到 $2^n-1$,他还会一种位运算 $cal(i,j)$,其中 $i$ 和 $j$ 都是布尔型的变量。现在他想生成一个数组 $b$,规则如下:

对于任意的一对 $i, j(0\le i,j< 2^n)$,熊孩子由 $i$ 和 $j$ 得到一个数 $k$,对于 $k$ 的二进制前 $n$ 位,第 $x$ 位等于 $cal(i$的第 $x$ 位, $j$ 的第 $x$ 位$)$,$k$ 的比第 $n$ 位还高的二进制位等于 $0$。如果 $k$ 等于 $i$,那么令 $b[i]+=a[j]$,每一对只计算一次

在给你数组 $a$ 和位运算的真值表,请你求出数组 $b$。

输入格式

第一行一个整数 $N$,数值上等于 $2^n$,代表数组长度。

接下来 $N$ 个整数,代表数组 $a$。

接下来一个 $2*2$ 的矩阵,代表位运算的真值表。行代表运算的第一个数,第一行代表 $0$,第二行代表 $1$。列代表运算的第二个数,第一列代表 $0$,第二列代表 $1$。

输出格式

一行 $N$ 个数,代表数组 $b$。

数据规模

对于 $30\%$ 的数据:$N \le 1024$。

对于另外 $10\%$ 的数据:真值表为

0 1
1 0

对于另外10%的数据:真值表为

1 0
1 0

对于 $100\%$ 的数据:$N \le 131072$,$a[i] \le 1000$。

样例解释

$b_0 = a_0 + a_1 + a_2 + a_3 = 10$。

$b_1 = a_1 + a_3 = 6$。

$b_2 = a_2 + a_3 = 7$。

$b_3 = a_3 = 4$

4
1 2 3 4
0 0
0 1
10 6 7 4