#include <bits/stdc++.h>
using namespace std;
#define MAX 1020
int matrix[MAX][MAX];
int visit[MAX];
int d[MAX],f[MAX],level[MAX];
int Time;
int city;
void dfs(int node,int counter) {
Time = Time + 1;
d[node] = Time;
cout <<"node = " << node << endl;
level[node] = counter;
visit[node] = 1;
for(int i = 0; i <= city - 1; i++){
if(matrix[node][i] == 1 && visit[i] == 0) {
dfs(i,counter);
}
}
Time++;
f[node] = Time;
return;
}
int main(void)
{
int node,edge;
city = node;
scanf("%d %d",&node,&edge);
memset(matrix,0,sizeof(matrix));
for(int i = 1; i <= edge; i++) {
int a,b;
scanf("%d %d",&a,&b);
matrix[a][b] = 1;
matrix[b][a] = 1;
}
memset(visit,0,sizeof(visit));
memset(level,0,sizeof(level));
Time = 0;
int counter = 1;
for(int i = 0; i <= node - 1; i++){
if(visit[i] == 0) {
dfs(i,counter);
counter++;
}
}
cout <<"ase" << endl;
for(int i = 0; i <= node - 1;i++){
printf("%d: %d %d %d\n",i,level[i],d[i],f[i]);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTUFYIDEwMjAKCmludCBtYXRyaXhbTUFYXVtNQVhdOwppbnQgdmlzaXRbTUFYXTsKaW50IGRbTUFYXSxmW01BWF0sbGV2ZWxbTUFYXTsKaW50IFRpbWU7CmludCBjaXR5OwoKdm9pZCBkZnMoaW50IG5vZGUsaW50IGNvdW50ZXIpIHsKICBUaW1lID0gVGltZSArIDE7CiAgZFtub2RlXSA9IFRpbWU7CiAgY291dCA8PCJub2RlID0gIiA8PCBub2RlIDw8IGVuZGw7CiAgbGV2ZWxbbm9kZV0gPSBjb3VudGVyOwogIHZpc2l0W25vZGVdID0gMTsKICBmb3IoaW50IGkgPSAwOyBpIDw9IGNpdHkgLSAxOyBpKyspewogICAgaWYobWF0cml4W25vZGVdW2ldID09IDEgJiYgdmlzaXRbaV0gPT0gMCkgewogICAgICAgIGRmcyhpLGNvdW50ZXIpOwogICAgfQogIH0KICBUaW1lKys7CiAgZltub2RlXSA9IFRpbWU7CiAgcmV0dXJuOwp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgbm9kZSxlZGdlOwogICAgY2l0eSA9IG5vZGU7CiAgICBzY2FuZigiJWQgJWQiLCZub2RlLCZlZGdlKTsKICAgIG1lbXNldChtYXRyaXgsMCxzaXplb2YobWF0cml4KSk7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGVkZ2U7IGkrKykgewogICAgICAgIGludCBhLGI7CiAgICAgICAgc2NhbmYoIiVkICVkIiwmYSwmYik7CiAgICAgICAgbWF0cml4W2FdW2JdID0gMTsKICAgICAgICBtYXRyaXhbYl1bYV0gPSAxOwogICAgfQogICAgbWVtc2V0KHZpc2l0LDAsc2l6ZW9mKHZpc2l0KSk7CiAgICBtZW1zZXQobGV2ZWwsMCxzaXplb2YobGV2ZWwpKTsKICAgIFRpbWUgPSAwOwogICAgaW50IGNvdW50ZXIgPSAxOwogICAgZm9yKGludCBpID0gMDsgaSA8PSBub2RlIC0gMTsgaSsrKXsKICAgICAgICBpZih2aXNpdFtpXSA9PSAwKSB7CiAgICAgICAgICAgIGRmcyhpLGNvdW50ZXIpOwogICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCJhc2UiIDw8IGVuZGw7CiAgICBmb3IoaW50IGkgPSAwOyBpIDw9IG5vZGUgLSAxO2krKyl7CiAgICAgICAgcHJpbnRmKCIlZDogJWQgJWQgJWRcbiIsaSxsZXZlbFtpXSxkW2ldLGZbaV0pOwogICAgfQogICAgcmV0dXJuIDA7Cgp9Cg==