#include int A[21][21]; int B[21][21]; int flagA[21][21]; int flagB[21][21]; int main() { int ans, best, i, j, M, N; while (1) { scanf("%d %d", &M, &N); if (M==0 && N==0) break; for (i=1; i<=M; i++) for (j=1; j<=N; j++) scanf("%d", &A[i][j]); for (i=1; i<=M; i++) for (j=1; j<=N; j++) scanf("%d", &B[i][j]); for (i=1; i<=M; i++) for (j=1; j<=N; j++) { flagA[i][j] = 0; flagB[i][j] = 0; } for (j=1; j<=N; j++) { best = -999; for (i=1; i<=M; i++) if (A[i][j] > best) best = A[i][j]; for (i=1; i<=M; i++) if (A[i][j] == best) flagA[i][j] = 1; } for (i=1; i<=M; i++) { best = -999; for (j=1; j<=N; j++) if (B[i][j] > best) best = B[i][j]; for (j=1; j<=N; j++) if (B[i][j] == best) flagB[i][j] = 1; } ans = 0; for (i=1; i<=M; i++) for (j=1; j<=N; j++) if (flagA[i][j] == 1 && flagB[i][j] == 1) ans++; printf("%d\n", ans); for (i=1; i<=M; i++) for (j=1; j<=N; j++) if (flagA[i][j] == 1 && flagB[i][j] == 1) printf("%d %d\n", i, j); } return 0; }