#include <bits/stdc++.h>
using namespace std;
const int mxN = 5e5 + 100;
set<int> adj[mxN];
bool vis[mxN];
vector<int> cur;
vector<vector<int>> ans;
void dfs(int u = 1){
while(adj[u].size()){
auto v = *adj[u].begin();
adj[u].erase(v), adj[v].erase(u);
dfs(v);
}
cur.push_back(u);
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
for(int i = 1; i <= m; ++i){
int u, v;
cin >> u >> v;
adj[u].insert(v);
adj[v].insert(u);
}
dfs(1);
vector<int> seen(n + 1, 0);
vector<vector<int>> ans;
stack<int> stk;
for(int i = (int) cur.size() - 1; i >= 0; --i){
if(seen[cur[i]]){
vector<int> x = {cur[i]};
while(stk.size() && stk.top() != cur[i]) {
seen[stk.top()] = 0;
x.push_back(stk.top());
stk.pop();
}
ans.push_back(x);
}else{
seen[cur[i]] = 1;
stk.push(cur[i]);
}
}
for(auto v : ans){
for(auto u : v){
cout << u << " ";
}
cout << "\n";
}
return 0;
}