#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 7;
vector<pair<int, int>> g[MAXN];
bool used[MAXN];
bool visited[MAXN];
int deg[MAXN];
bool pos[MAXN];
int n, m;
void wczytaj(){
cin >> n >> m;
for(int i = 0; i < m; i++){
int a, b;
cin >> a >> b;
g[a].push_back({b, i});
g[b].push_back({a, i});
deg[a]++; deg[b]++;
}
}
void dfs(int v){
visited[v] = true;
for(auto [u, c]: g[v])
if(!visited[u]) dfs(u);
}
int main(){
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
wczytaj();
stack<int> st;
vector<int> ans;
st.push(1);
while(!st.empty()){
int v = st.top();
if(g[v].size()){
auto [tmp, idx] = g[v].back();
g[v].pop_back();
if(used[idx]) continue;
used[idx] = true;
st.push(tmp);
}
else{
ans.push_back(v);
st.pop();
}
}
stack<int> ver;
for(int i = 0; i < (int)ans.size(); i++){
if(!pos[ans[i]]){//elementu nie aktualnie do wykorzystania
pos[ans[i]] = true;
ver.push(ans[i]);
}
else{
while(!ver.empty()){
if(ver.top() == ans[i]) break;
cout << ver.top() <<" ";
pos[ver.top()] = false;
ver.pop();
}
cout << ans[i] << '\n';
}
}
}