#include<bits/stdc++.h>
using namespace std ;
const int N = 105 ;
int n , m , deep[N] ;
vector<int> nei[N] ;
void dfs(int node , int par=-1){
for(int i:nei[node]){
if(i==par) continue ;
deep[i]=deep[node]+1 ;
dfs(i) ;
}
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
cin >> n >> m ;
for(int i=0 ; i<m ; i++){
int a , b ; cin >> a >> b ;
nei[a].push_back(b) ; nei[b].push_back(a) ;
}
int root ;
for(int i=0 ; i<n ; i++){
if(nei[i].size()==1){
root = i ; break ;
}
}
dfs(root) ;
cout << 2*n << '\n' ;
for(int i=0 ; i<2*n ; i++){
for(int j=0 ; j<n ; j++){
if(j==root || j==nei[root][0] || deep[j]%2==i%2) cout << n << ' ' ;
else cout << j << ' ' ;
}
cout << '\n' ;
}
return 0 ;
}