#include <bits/stdc++.h>
using namespace std;
const int mxN = 5e5 + 100;
vector<pair<int, int>> adj[mxN];
bool vis[mxN];
vector<int> cur;
vector<vector<int>> ans;
void dfs(int u = 1){
while(adj[u].size()){
auto [v, i] = adj[u].back();
adj[u].pop_back();
if(!vis[i]){
vis[i] = 0;
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].push_back({v, i});
adj[v].push_back({u, i});
}
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;
}