#include <bits/stdc++.h>
using namespace std;
struct aaa {
  int x, y;
};
int n, m;
struct aaa d[210];
int a[210][210];
int num, wx[210 << 1], wy[210 << 1];
int main() {
  while (scanf("%d%d", &n, &m) == 2) {
    int i, j, zero, No_x, No_y;
    for (i = 1; i <= n; i++) d[i].x = d[i].y = 0;
    for (i = 1; i <= m; i++) {
      scanf("%d", &a[i][0]);
      for (j = 1; j <= a[i][0]; j++) {
        scanf("%d", &a[i][j]);
        d[a[i][j]].x = i;
        d[a[i][j]].y = j;
      }
    }
    for (zero = 1; zero <= n; zero++)
      if (d[zero].x == 0) break;
    num = 0;
    No_x = No_y = 1;
    for (i = 1; i <= n - 1; i++) {
      if (d[i].x == 0) {
        for (j = i + 1; j <= n; j++)
          if (d[j].x == No_x && d[j].y == No_y) {
            d[i] = d[j];
            num++;
            wx[num] = j;
            wy[num] = i;
            d[j].x = d[j].y = 0;
            zero = j;
            break;
          }
      } else {
        if (d[i].x != No_x || d[i].y != No_y) {
          for (j = i + 1; j <= n; j++)
            if (d[j].x == No_x && d[j].y == No_y) break;
          d[zero] = d[i];
          d[i] = d[j];
          ++num;
          wx[num] = i;
          wy[num] = zero;
          ++num;
          wx[num] = j;
          wy[num] = i;
          d[j].x = d[j].y = 0;
          zero = j;
        }
      }
      if (No_y == a[No_x][0]) {
        No_x++;
        No_y = 1;
      } else {
        No_y++;
      }
    }
    printf("%d\n", num);
    for (i = 1; i <= num; i++) printf("%d %d\n", wx[i], wy[i]);
  }
  return 0;
}
