import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder output = new StringBuilder();
static StringTokenizer tokens = null;
static int T, K;
private static List<Integer>[] gears = new List[5];
public static void main(String[] args) throws IOException {
T = Integer.parseInt(input.readLine());
for (int t = 1; t <= T; t++) {
K = Integer.parseInt(input.readLine());
for (int i = 1; i < gears.length; i++) {
gears[i] = new LinkedList<>();
tokens = new StringTokenizer(input.readLine());
while (tokens.hasMoreTokens()) {
gears[i].add(Integer.parseInt(tokens.nextToken()));
}
}
for (int k = 0; k < K; k++) {
tokens = new StringTokenizer(input.readLine(), " ");
int gearNo = Integer.parseInt(tokens.nextToken());
int dir = Integer.parseInt(tokens.nextToken());
int[] turnMap = new int[5];
turnMap[gearNo] = dir;
effectRight(gearNo, dir, turnMap);
effectLeft(gearNo, dir, turnMap);
for(int i=1; i<turnMap.length; i++) {
int turnDir = turnMap[i];
if(turnDir==1) {
gears[i].add(0, gears[i].remove(7));
}
else if(turnDir==-1) {
gears[i].add(gears[i].remove(0));
}
}
}
int answer = 0;
for (int i = 1; i < gears.length; i++) {
answer += gears[i].get(0) * Math.pow(2, i - 1);
}
output.append("#").append(t).append(" ").append(answer).append("\n");
}
System.out.println(output);
}
private static void effectRight(int gearNo, int dir, int[] turnMap) {
if (gearNo == 4) {
return;
}
if (gears[gearNo].get(2) != gears[gearNo + 1].get(6)) {
turnMap[gearNo + 1] = dir * -1;
effectRight(gearNo + 1, dir * -1, turnMap);
}
}
private static void effectLeft(int gearNo, int dir, int[] turnMap) {
if (gearNo == 1) {
return;
}
if (gears[gearNo].get(6) != gears[gearNo - 1].get(2)) {
turnMap[gearNo - 1] = dir * -1;
effectLeft(gearNo - 1, dir * -1, turnMap);
}
}
}