#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:134217728")
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int m;
int n;
vector<int> v[200];
int pos[200];
vector<pair<int, int> > ans;
int get() {
  for (int i = 0; i < (n); i++)
    if (pos[i] == -1) return i;
  return 0;
}
void add(int x, int y) {
  if (x == y) return;
  ans.push_back(make_pair(x, y));
  for (int i = 0; i < (m); i++)
    for (int j = 0; j < (((int)(v[i]).size())); j++)
      if (v[i][j] == x) v[i][j] = y;
  pos[y] = pos[x];
}
void paste(int i, int j, int p) {
  if (v[i][j] == p) return;
  int o = get();
  int c = v[i][j];
  add(p, o);
  add(c, p);
  pos[c] = -1;
}
int main() {
  memset(pos, -1, sizeof(pos));
  cin >> n >> m;
  for (int i = 0; i < (m); i++) {
    int k;
    cin >> k;
    for (int j = 0; j < (k); j++) {
      int x;
      cin >> x;
      x--;
      v[i].push_back(x);
      pos[x] = i;
    }
  }
  int c = 0;
  for (int i = 0; i < (m); i++)
    for (int j = 0; j < (((int)(v[i]).size())); j++) {
      paste(i, j, c++);
    }
  cout << ((int)(ans).size()) << endl;
  for (int i = 0; i < (((int)(ans).size())); i++)
    cout << ans[i].first + 1 << ' ' << ans[i].second + 1 << endl;
  return 0;
}
