// DFS
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<vector<int>> adj;
vector<int> d, f;
int t;
void dfs(int u) {
d[u] = ++t;
for (int v : adj[u]) {
if (d[v] == 0) {
dfs(v);
}
}
f[u] = ++t;
}
int main() {
cin >> n;
adj.resize(n + 1);
d.resize(n + 1, 0);
f.resize(n + 1, 0);
t = 0;
for (int i = 0; i < n; i++) {
int u, k;
cin >> u >> k;
for (int j = 0; j < k; j++) {
int v;
cin >> v;
adj[u].push_back(v);
}
}
for (int i = 1; i <= n; i++) {
if (d[i] == 0) {
dfs(i);
}
}
for (int i = 1; i <= n; i++) {
cout << i << " " << d[i] << " " << f[i] << endl;
}
return 0;
}
Ly8gREZTCgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbjsKdmVjdG9yPHZlY3RvcjxpbnQ+PiBhZGo7CnZlY3RvcjxpbnQ+IGQsIGY7CmludCB0OwoKdm9pZCBkZnMoaW50IHUpIHsKICAgIGRbdV0gPSArK3Q7CiAgICBmb3IgKGludCB2IDogYWRqW3VdKSB7CiAgICAgICAgaWYgKGRbdl0gPT0gMCkgewogICAgICAgICAgICBkZnModik7CiAgICAgICAgfQogICAgfQogICAgZlt1XSA9ICsrdDsKfQoKaW50IG1haW4oKSB7CiAgICBjaW4gPj4gbjsKICAgIGFkai5yZXNpemUobiArIDEpOwogICAgZC5yZXNpemUobiArIDEsIDApOwogICAgZi5yZXNpemUobiArIDEsIDApOwogICAgdCA9IDA7CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IHUsIGs7CiAgICAgICAgY2luID4+IHUgPj4gazsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGs7IGorKykgewogICAgICAgICAgICBpbnQgdjsKICAgICAgICAgICAgY2luID4+IHY7CiAgICAgICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBpZiAoZFtpXSA9PSAwKSB7CiAgICAgICAgICAgIGRmcyhpKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNvdXQgPDwgaSA8PCAiICIgPDwgZFtpXSA8PCAiICIgPDwgZltpXSA8PCBlbmRsOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==