#include <bits/stdc++.h>
#define ll long long
#define IOS ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
using namespace std;
int m, n;
vector<pair<int, int>> swaps;
struct node {
int a, b;
};
node arr[1001][1001];
ll a[100010];
ll calc(int r) {
ll _a = 0, _b = 0, _1 = 0, _2 = 0;
for (int i = 1; i <= m; i++) {
_a += arr[r][i].a;
_b += arr[r][i].b;
}
for (int i = 1; i <= m; i++) {
_1 += (arr[r][i].a - _a / m) * (arr[r][i].a - _a / m);
_2 += (arr[r][i].b - _b / m) * (arr[r][i].b - _b / m);
}
return _1 / m + _2 / m;
}
int main() {
IOS
cin >> m >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> arr[i][j].a;
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> arr[i][j].b;
}
}
for (int i = 1; i <= n; i++) {
a[i] = calc(i);
}
for (int i = 1; i <= n; i++) {
int maxi = i;
for (int j = i; j <= n; j++) {
if (a[maxi] < a[j]) {
maxi = j;
}
}
if (maxi != i) {
swaps.push_back({i, maxi});
swap(a[maxi], a[i]);
}
}
cout << swaps.size() << "\n";
for (auto &p : swaps) {
cout << p.first << " " << p.second << "\n";
}
return 0;
}