#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ll N, M;
cin >> N >> M;
vector<vector<ll> > adjList(N);
for (ll i = 0; i < M; i++) {
ll ui, vi;
cin >> ui >> vi;
adjList[ui].push_back(vi);
adjList[vi].push_back(ui);
}
cout << N + (N - 2) + (N - 1) << endl;
for (ll i = N - 1; i >= 1; i--) {
vector<ll> colors(N);
for (ll j = 0; j < N; j++) {
colors[j] = j + 1;
}
colors[i] = colors[i - 1] = 0;
for (ll j = 0; j < N; j++) {
if (j != 0) cout << " ";
cout << colors[j];
}
cout << endl;
}
for (ll i = N - 1; i >= 2; i--) {
vector<ll> colors(N);
for (ll j = 0; j < N; j++) {
colors[j] = j + 1;
}
colors[i] = colors[i - 1] = colors[i - 2] = 0;
for (ll j = 0; j < N; j++) {
if (j != 0) cout << " ";
cout << colors[j];
}
cout << endl;
}
vector<ll> colors(N);
for (ll j = 0; j < N; j++) {
colors[j] = j + 1;
}
colors[0] = colors[1] = 0;
for (ll j = 0; j < N; j++) {
if (j != 0) cout << " ";
cout << colors[j];
}
cout << endl;
for (ll i = N - 1; i >= 1; i--) {
vector<ll> colors(N);
for (ll j = 0; j < N; j++) {
colors[j] = j + 1;
}
colors[i] = colors[i - 1] = 0;
for (ll j = 0; j < N; j++) {
if (j != 0) cout << " ";
cout << colors[j];
}
cout << endl;
}
}