// #pragma GCC optimize ("Ofast")
#include <bits/stdc++.h>
#define int long long
#define ft first
#define sc second
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define GG cout << " OPA " << '\n';

using namespace std;

const int N = 400 + 5;
const int INF = 1e9;

vector <int> vec[N][N];
vector <int> mas[N];

void solve() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n * m; i ++) {
        int x;
        cin >> x;
        vec[i / m][x].pb(i + 1);
    }
    // cout << vec[3][3].size() << '\n';
    vector <pair <int, int> > ans;
    for (int i = 0; i < n; i ++) {
        vector <int> mr;
        for (int j = 0; j < n; j ++) mas[j].clear();
        for (int j = 1; j <= m; j ++) {
            if (vec[i][j].size() > 1) {
                for (int z = 0; z < n; z ++) {
                    if (vec[z][j].size() == 0) mas[z].pb(j);
                }
            }
        }
        for (int k = 1; k <= 10; k ++) {
            for (int j = 1; j <= m; j ++) {
                if (vec[i][j].size() == 0) {
                    for (int z = 0; z < n; z ++) {
                        while (!mas[z].empty() && (vec[i][mas[z].back()].size() < 2 || vec[z][j].size() < 2 || vec[z][mas[z].back()].size() != 0)) mas[z].pop_back();
                        if (vec[z][j].size() > 1 && !mas[z].empty()) {
                            ans.pb({vec[i][mas[z].back()].back(), n * m + 1});
                            ans.pb({vec[z][j].back(), vec[i][mas[z].back()].back()});
                            ans.pb({n * m + 1, vec[z][j].back()});
                            int x = vec[i][mas[z].back()].back();
                            int y = vec[z][j].back();
                            vec[i][mas[z].back()].pop_back();
                            vec[z][j].pop_back();
                            vec[z][mas[z].back()].pb(x);
                            vec[i][j].pb(y);
                        }
                    }
                }
            }
        }
    }
    cout << ans.size() << '\n';
    for (auto it : ans) cout << it.ft << ' ' << it.sc << '\n';
}

main() {
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cerr.tie(0);
    int test = 1;
    // cin >> test;
    while(test --) {
        solve();
    }
}