#include "testlib.h"
#include <queue>
#include <functional>

const int d[4][2] = {
	{-1, 0}, {1, 0}, {0, 1}, {0, -1}
};

int readAns(InStream& in, const int n, const std::vector<std::vector<int>>& ori)
{
	std::vector<std::vector<int>> sol(2, std::vector<int>(n));
	for (int i = 0; i < 2; i++)
		for (int j = 0; j < n; j++)
			sol[i][j] = in.readInt(1, 2 * n, "col");
	for (int i = 0; i < 2; i++)
		for (int j = 0; j < n; j++)
			if (ori[i][j] != 0 && sol[i][j] != ori[i][j])
				in.quitf(_wa, "original color changed");
	std::vector<std::vector<bool>> vis(2, std::vector<bool>(n, false));
	std::function<void(int, int)> bfs = [&](int x, int y)
	{
		std::queue<std::pair<int, int>> q;
		q.push({x, y}); vis[x][y] = true;
		while (!q.empty())
		{
			int x, y; std::tie(x, y) = q.front(); q.pop();
			for (int k = 0; k < 4; k++)
			{
				int nx = x + d[k][0], ny = y + d[k][1];
				if (nx < 0 || nx >= 2 || ny < 0 || ny >= n)
					continue;
				if (vis[nx][ny] || sol[x][y] != sol[nx][ny])
					continue;
				vis[nx][ny] = true;
				q.push({nx, ny});
			}
		}
	};
	int ans = 0;
	for (int i = 0; i < 2; i++)
		for (int j = 0; j < n; j++)
			if (!vis[i][j])
			{
				++ans;
				bfs(i, j);
			}
	return ans;
}

int main(int argc, char *argv[])
{
	registerTestlibCmd(argc, argv);
	int n = inf.readInt();
	std::vector<std::vector<int>> ori(2, std::vector<int>(n));
	for (int i = 0; i < 2; i++)
		for (int j = 0; j < n; j++)
			ori[i][j] = inf.readInt();
	int jans = readAns(ans, n, ori);
	int pans = readAns(ouf, n, ori);
	if (pans > jans)
		quitf(_wa, "jury has the better answer: jans = %d, pans = %d", jans, pans);
	if (pans < jans)
		quitf(_fail, "participant has the better answer: jans = %d, pans = %d", jans, pans);
	quitf(_ok, "ok, pans = jans = %d", pans);	
	return 0;
}
