#include #include #include #include #include #include #include #include #include int PA[40][40]; int PB[40][40]; using namespace std; int m,n; static int isgooda(int a, int b) { int val = PA[a][b]; for(int i = 0; i < m; i++) if(PA[i][b] > val) return false; return true; } static int isgoodb(int a, int b) { int val = PB[a][b]; for(int i = 0; i < n; i++) if(PB[a][i] > val) return false; return true; } static int isgood(int a, int b) { return isgooda(a,b) && isgoodb(a,b); } void run() { cin >> m >> n; if(m==0 && n==0) exit(0); for(int i = 0; i < m; i++) for(int j = 0; j < n; j++) cin >> PA[i][j]; for(int i = 0; i < m; i++) for(int j = 0; j < n; j++) cin >> PB[i][j]; vector > ne; for(int a = 0; a < m; a++) for(int b = 0; b < n; b++) if(isgood(a,b)) ne.push_back(make_pair(a,b)); cout << ne.size() << endl; for(int i = 0; i < ne.size(); i++) cout << ne[i].first+1 << ' ' << ne[i].second+1 << endl; } int main() { while(1) run(); }