#include <bits/stdc++.h>
#define rep(i,a,b) for (int i=a; i<b; i++)
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define debug printf
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> PII;
const int MX = (int)1e5 + 5, MK = 200;
map < int, int > skala;
int reskala[MX];
vector < PII > ans;
int moves;
vector < int > V[MX], S;
int p10[100];
int cy(int x, int pos)
{
return ((x / p10[pos]) % 10);
}
void rusz(int x, int y)
{
moves--;
ans.pb({x, y});
//printf("%d %d\n", x, y);
assert(V[x].size());
V[y].pb(V[x].back());
V[x].pop_back();
}
int main ()
{
int n, k;
scanf("%d%d", &n, &k);
moves = 13 * n;
for(int i = 1; i <= k; ++i)
{
int t;
scanf("%d", &t);
for(int j = 1; j <= t; ++j)
{
int a;
scanf("%d", &a);
V[i].pb(a);
S.pb(a);
}
reverse(all(V[i]));
}
sort(all(S));
for(int i = 0; i < n; ++i)
{
skala[S[i]] = i;
reskala[i] = S[i];
}
for(int i = 1; i <= k; ++i)
for(auto &v : V[i])
v = skala[v];
for(int i = 1; i < k; ++i)
while(V[i].size())
rusz(i, k);
p10[0] = 1;
for(int i = 1; i < 10; ++i)
p10[i] = 10 * p10[i - 1];
for(int cyf = 4; cyf >= 0; --cyf)
{
while(V[k].size())
{
int gdzie = 1 + cy(V[k].back(), cyf);
rusz(k, gdzie);
}
for(int oc = 9; oc >= 0; --oc)
for(int i = 10; i > 0; --i)
while(V[i].size() && cy(V[i].back(), cyf + 1) == oc)
rusz(i, k);
/*for(int i = 1; i <= k; ++i)
{
printf("\n%d ", (int)V[i].size());
for(auto v : V[i])
printf("%d ", v);
}*/
}
int ile = n / k;
for(int i = 1; i < k; ++i)
{
int pom = ((i == 1) ? 2 : 1);
for(int j = 1; j <= ile; ++j)
rusz(k, pom);
for(int j = 1; j <= ile; ++j)
rusz(pom, i);
}
assert(moves >= 0);
printf("%d\n", (int)ans.size());
for(auto v : ans)
printf("%d %d\n", v.fi, v.se);
/*for(int i = 1; i <= k; ++i)
{
printf("\n%d ", (int)V[i].size());
for(auto v : V[i])
printf("%d ", reskala[v]);
}*/
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcmVwKGksYSxiKSBmb3IgKGludCBpPWE7IGk8YjsgaSsrKQojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwoeCkuZW5kKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGRlYnVnIHByaW50Zgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBQSUk7Cgpjb25zdCBpbnQgTVggPSAoaW50KTFlNSArIDUsIE1LID0gMjAwOwoKbWFwIDwgaW50LCBpbnQgPiBza2FsYTsKaW50IHJlc2thbGFbTVhdOwp2ZWN0b3IgPCBQSUkgPiBhbnM7CmludCBtb3ZlczsKCnZlY3RvciA8IGludCA+IFZbTVhdLCBTOwppbnQgcDEwWzEwMF07CgppbnQgY3koaW50IHgsIGludCBwb3MpCnsKCXJldHVybiAoKHggLyBwMTBbcG9zXSkgJSAxMCk7Cn0KCnZvaWQgcnVzeihpbnQgeCwgaW50IHkpCnsKCW1vdmVzLS07CglhbnMucGIoe3gsIHl9KTsKCS8vcHJpbnRmKCIlZCAlZFxuIiwgeCwgeSk7Cglhc3NlcnQoVlt4XS5zaXplKCkpOwoJVlt5XS5wYihWW3hdLmJhY2soKSk7CglWW3hdLnBvcF9iYWNrKCk7Cn0KCmludCBtYWluICgpCnsKCWludCBuLCBrOwoJc2NhbmYoIiVkJWQiLCAmbiwgJmspOwoJbW92ZXMgPSAxMyAqIG47Cglmb3IoaW50IGkgPSAxOyBpIDw9IGs7ICsraSkKCXsKCQlpbnQgdDsKCQlzY2FuZigiJWQiLCAmdCk7CgkJZm9yKGludCBqID0gMTsgaiA8PSB0OyArK2opCgkJewoJCQlpbnQgYTsKCQkJc2NhbmYoIiVkIiwgJmEpOwoJCQlWW2ldLnBiKGEpOwoJCQlTLnBiKGEpOwoJCX0KCQlyZXZlcnNlKGFsbChWW2ldKSk7Cgl9Cglzb3J0KGFsbChTKSk7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKQoJewoJCXNrYWxhW1NbaV1dID0gaTsKCQlyZXNrYWxhW2ldID0gU1tpXTsKCX0KCWZvcihpbnQgaSA9IDE7IGkgPD0gazsgKytpKQoJCWZvcihhdXRvICZ2IDogVltpXSkKCQkJdiA9IHNrYWxhW3ZdOwoJZm9yKGludCBpID0gMTsgaSA8IGs7ICsraSkKCQl3aGlsZShWW2ldLnNpemUoKSkKCQkJcnVzeihpLCBrKTsKCXAxMFswXSA9IDE7Cglmb3IoaW50IGkgPSAxOyBpIDwgMTA7ICsraSkKCQlwMTBbaV0gPSAxMCAqIHAxMFtpIC0gMV07Cglmb3IoaW50IGN5ZiA9IDQ7IGN5ZiA+PSAwOyAtLWN5ZikKCXsKCQl3aGlsZShWW2tdLnNpemUoKSkKCQl7CgkJCWludCBnZHppZSA9IDEgKyBjeShWW2tdLmJhY2soKSwgY3lmKTsKCQkJcnVzeihrLCBnZHppZSk7CgkJfQoJCWZvcihpbnQgb2MgPSA5OyBvYyA+PSAwOyAtLW9jKQoJCQlmb3IoaW50IGkgPSAxMDsgaSA+IDA7IC0taSkKCQkJCXdoaWxlKFZbaV0uc2l6ZSgpICYmIGN5KFZbaV0uYmFjaygpLCBjeWYgKyAxKSA9PSBvYykKCQkJCQlydXN6KGksIGspOwoJCS8qZm9yKGludCBpID0gMTsgaSA8PSBrOyArK2kpCgkJewoJCQlwcmludGYoIlxuJWQgIiwgKGludClWW2ldLnNpemUoKSk7CgkJCWZvcihhdXRvIHYgOiBWW2ldKQoJCQkJcHJpbnRmKCIlZCAiLCB2KTsKCQl9Ki8KCX0KCWludCBpbGUgPSBuIC8gazsKCWZvcihpbnQgaSA9IDE7IGkgPCBrOyArK2kpCgl7CgkJaW50IHBvbSA9ICgoaSA9PSAxKSA/IDIgOiAxKTsgCgkJZm9yKGludCBqID0gMTsgaiA8PSBpbGU7ICsraikKCQkJcnVzeihrLCBwb20pOwoJCWZvcihpbnQgaiA9IDE7IGogPD0gaWxlOyArK2opCgkJCXJ1c3oocG9tLCBpKTsKCX0KCWFzc2VydChtb3ZlcyA+PSAwKTsKCXByaW50ZigiJWRcbiIsIChpbnQpYW5zLnNpemUoKSk7Cglmb3IoYXV0byB2IDogYW5zKQoJCXByaW50ZigiJWQgJWRcbiIsIHYuZmksIHYuc2UpOwoJLypmb3IoaW50IGkgPSAxOyBpIDw9IGs7ICsraSkKCXsKCQlwcmludGYoIlxuJWQgIiwgKGludClWW2ldLnNpemUoKSk7CgkJZm9yKGF1dG8gdiA6IFZbaV0pCgkJCXByaW50ZigiJWQgIiwgcmVza2FsYVt2XSk7Cgl9Ki8KCQp9