#include <bits/stdc++.h>
using namespace std;
int N, M;
int K[210];
pair<int, int> disk[210];
int main() {
  while (2 == scanf("%d%d", &N, &M)) {
    for (int i = 0; i < (int)(N); i++) disk[i] = make_pair(-1, -1);
    for (int i = 0; i < (int)(M); i++) {
      scanf("%d", K + i);
      for (int j = 0; j < (int)(K[i]); j++) {
        int a;
        scanf("%d", &a);
        --a;
        disk[a] = make_pair(i, j);
      }
    }
    vector<pair<int, int> > ans;
    int to = -1;
    for (int i = 0; i < (int)(M); i++)
      for (int j = 0; j < (int)(K[i]); j++) {
        ++to;
        int fr = -1, tm = -1;
        for (int p = 0; p < (int)(N); p++) {
          if (disk[p] == make_pair(i, j)) fr = p;
          if (disk[p].first == -1) tm = p;
        }
        if (fr == to) continue;
        if (disk[to].first == -1) {
          ans.push_back(make_pair(fr, to));
          swap(disk[fr], disk[to]);
        } else {
          ans.push_back(make_pair(to, tm));
          swap(disk[to], disk[tm]);
          ans.push_back(make_pair(fr, to));
          swap(disk[fr], disk[to]);
        }
      }
    printf("%d\n", (int)ans.size());
    for (int i = 0; i < (int)(ans.size()); i++)
      printf("%d %d\n", ans[i].first + 1, ans[i].second + 1);
  }
  return 0;
}
