#include<bits/stdc++.h>
using namespace std;
const int maxn = 1010;
double a[maxn][maxn], b[maxn][maxn];
double n, m;
vector<double> tv;
vector<double> v;
vector<int> swap1, swap2;
double sigma2(int i, int k, double m, double t[1010][1010]){
double ans = 0;
for(; k <= m; k++){
ans += t[i][k];
}
return ans/m;
}
double sigma1(int i, int j, double m, double t[1010][1010]){
double ans = 0;
double s2 = sigma2(i,1,m,t);
for(; j <= m; j++){
ans += pow(t[i][j] - s2, 2);
}
return ans;
}
int main(){
cin >> m >> n;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> a[i][j];
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> b[i][j];
}
}
double ans = 0;
for(int i = 1; i <= n; i++){
ans = sigma1(i,1,m,a)/m + sigma1(i,1,m,b)/m;
v.push_back(ans);
tv.push_back(ans);
}
for(int i = 0; i < v.size(); i++){
double min_n = v[i];
int pos = i;
for(int j = i+1; j < v.size(); j++){
if(min_n > v[j]){min_n = v[j]; pos = j;}
}
if(i != pos){
swap1.push_back(i);
swap2.push_back(pos);
int temp = v[i];
v[i] = v[pos];
v[pos] = temp;
}
}
cout << swap1.size() << "\n";
for(int i = 0; i < swap1.size(); i++){
cout << swap1[i]+1 << " " << swap2[i]+1 << "\n";
}
return 0;
}