// 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;
}