/*
TASK: marriage
LANG: C++
*/

#include <stdio.h>
#include <stdlib.h>

int pairing[128], pairs, used[128];

int mgrades[128][128], dgrades[128][128];
int n;

void pair() {
	int i = 0;
	if (pairs == n) {
		while (i < n) {
			printf("%i %i\n", i+1, pairing[i]+1);
			i++;
		}
		exit(0);
	}
	while (i < n) {
		if ((mgrades[pairs][0] == i || dgrades[i][0] == pairs) && !used[i]) {
			pairing[pairs++] = i;
			used[i] = 1;
			pair();
			used[i] = 0;
			pairs--;
		}
		i++;
	}
}

int main() {
	int i, j, temp;
	scanf("%i", &n);
	i = 0;
	while (i < n) {
		j = 0;
		while (j < n) {
			scanf("%i", &temp);
			mgrades[i][n-temp] = j;
			j++;
		}
		i++;
	}
	i = 0;
	while (i < n) {
		j = 0;
		while (j < n) {
			scanf("%i", &temp);
			dgrades[i][n-temp] = j;
			j++;
		}
		i++;
	}
	pair();
	printf("0\n");
	return 0;
}
