#include<iostream>
#include<vector>
#include<cstring>
#include<stack>
#include<cstdio>
#define max 1000
#define INF 100000000
using namespace std;
vector<int> adj[max];
int s[max],f[max],nodes[max];
int time_count,n,e;
char visited[max];
stack<int> st;
int tim,m=0;
void createAdjecenyList(int u,int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
void print_st(stack<int> ps){
while(!ps.empty()){
printf("%d ",ps.top());
ps.pop();
}
printf("\n");
}
void printnodes(){
int i;
for(i=0;i<m;i++)
printf("node: %d st_time: %d end_time: %d\n",nodes[i],s[nodes[i]],f[nodes[i]]);
}
void dfs(int v){
int u,i,count;
tim = 0;
st.push(v);
visited[v]=1;
while(!st.empty()){
u = st.top();
count=0;
s[u] = tim++;
printf("Printing stack\n");
print_st(st);
nodes[m++]=u;
for(i=0;i<adj[u].size();i++)
if(!visited[adj[u][i]]) {
st.push(adj[u][i]);
visited[adj[u][i]] = 1;
}
else count++;
if(count==adj[u].size()){
f[u]=tim++;
st.pop();
}
}
}
int main(){
int u,v,i;
memset(visited,0,sizeof(visited)); // 0 is for new node and 1 is for visited node
scanf("%d",&n); // number of nodes
scanf("%d",&e); // number of edges
while(e--) {
scanf("%d %d",&u,&v);
createAdjecenyList(u,v);
}
dfs(1);
printnodes();
cout<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8c3RhY2s+CiNpbmNsdWRlPGNzdGRpbz4KCiNkZWZpbmUgbWF4IDEwMDAKI2RlZmluZSBJTkYgMTAwMDAwMDAwCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBhZGpbbWF4XTsKaW50IHNbbWF4XSxmW21heF0sbm9kZXNbbWF4XTsKaW50IHRpbWVfY291bnQsbixlOwpjaGFyIHZpc2l0ZWRbbWF4XTsKc3RhY2s8aW50PiBzdDsKaW50IHRpbSxtPTA7Cgp2b2lkIGNyZWF0ZUFkamVjZW55TGlzdChpbnQgdSxpbnQgdil7CiAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgIGFkalt2XS5wdXNoX2JhY2sodSk7Cn0KCnZvaWQgcHJpbnRfc3Qoc3RhY2s8aW50PiBwcyl7CiB3aGlsZSghcHMuZW1wdHkoKSl7CiAgcHJpbnRmKCIlZCAgIixwcy50b3AoKSk7CiAgcHMucG9wKCk7CiB9CiBwcmludGYoIlxuIik7Cn0KCnZvaWQgcHJpbnRub2RlcygpewogaW50IGk7CiBmb3IoaT0wO2k8bTtpKyspCiAgcHJpbnRmKCJub2RlOiAlZCAgIHN0X3RpbWU6ICVkICAgZW5kX3RpbWU6ICVkXG4iLG5vZGVzW2ldLHNbbm9kZXNbaV1dLGZbbm9kZXNbaV1dKTsKfQoKdm9pZCBkZnMoaW50IHYpewogaW50IHUsaSxjb3VudDsKIHRpbSA9IDA7CiBzdC5wdXNoKHYpOwogdmlzaXRlZFt2XT0xOwogd2hpbGUoIXN0LmVtcHR5KCkpewogIHUgPSBzdC50b3AoKTsKICBjb3VudD0wOwogIHNbdV0gPSB0aW0rKzsKICBwcmludGYoIlByaW50aW5nIHN0YWNrXG4iKTsKICBwcmludF9zdChzdCk7CiAgbm9kZXNbbSsrXT11OwogIGZvcihpPTA7aTxhZGpbdV0uc2l6ZSgpO2krKykKICAgIGlmKCF2aXNpdGVkW2Fkalt1XVtpXV0pIHsKICAgICBzdC5wdXNoKGFkalt1XVtpXSk7CiAgICAgdmlzaXRlZFthZGpbdV1baV1dID0gMTsKICAgIH0KICAgIGVsc2UgY291bnQrKzsKICBpZihjb3VudD09YWRqW3VdLnNpemUoKSl7CiAgIGZbdV09dGltKys7CiAgIHN0LnBvcCgpOwogIH0KIH0KfQoKaW50IG1haW4oKXsKICAgIGludCB1LHYsaTsKICAgIG1lbXNldCh2aXNpdGVkLDAsc2l6ZW9mKHZpc2l0ZWQpKTsgIC8vIDAgIGlzIGZvciBuZXcgbm9kZSBhbmQgMSBpcyBmb3IgdmlzaXRlZCBub2RlCiAgICBzY2FuZigiJWQiLCZuKTsgIC8vIG51bWJlciBvZiBub2RlcwogICAgc2NhbmYoIiVkIiwmZSk7IC8vIG51bWJlciBvZiBlZGdlcwogICAgd2hpbGUoZS0tKSB7CiAgICAgICBzY2FuZigiJWQgJWQiLCZ1LCZ2KTsKICAgICAgIGNyZWF0ZUFkamVjZW55TGlzdCh1LHYpOwogICAgfQogICAgZGZzKDEpOwogICAgcHJpbnRub2RlcygpOwogICAgY291dDw8ZW5kbDsKICAgIHJldHVybiAwOwp9