A+B Problem 往往是编程初学者会遇到的题目。请编程解决一个 A op B Problem。定义 op :N×N→N 是非负整数集 N 上的二元运算。对于两个长度相同的非负整数 a 和 b,a op b的结果按如下方式计算:
(1)按位处理 a 和 b 的每一个二进制位。
(2)记 a 和 b 某个二进制位上的值分别为a0 和 b0:
① 若 a0=0 且 b0=0 ,则运算结果中该位的值为 w0 ;
② 若 a0=0 且 b0=1 ,则运算结果中该位的值为 w1 ;
③ 若 a0=1 且 b0=0,则运算结果中该位的值为 w2 ;
④ 若 a0=1 且 b0=1,则运算结果中该位的值为 w3。
上述w0,w1,w2,w3∈{0,1}。同时,规定恒有 w0=0 成立。现在给定 a,b 与w0,w1,w2,w3 的值,请编程计算 a op b的结果。
输入
有多组数据输入。第一行是一个整数 q (1≤q≤105),表示输入数据的组数。接下来是要输入的多组数据,每组数据包含两行。
第一行是两个非负整数 a,b (0≤a,b<232),中间用空格分隔。
第二行是四个整数 w0,w1,w2,w3 ,分别用空格分隔,保证 w0≡0,w0,w1,w2,w3∈{0,1}。
输出
输出 q 行,每行一个非负整数,表示 a op b 的结果。
输入样例
3
5 3
0 0 0 1
5 3
0 1 1 1
5 3
0 1 1 0
输出样例
1
7
6