OI I - prs

// https://szkopul.edu.pl/problemset/problem/2owz-68y5sL4zjPY5IuKoqW1/site/?key=statement

// Przepustowość sieci

#include <bits/stdc++.h>

// using namespace std;

// #define GARY_DBG
#define GARY_LIB

// #define int long long

constexpr int sizik = 101, INF = 1000 * 1000 * 1000;

#define ar std::array
#define pr std::pair
#define vec std::vector

typedef vec<vec<int>> _kra;

// std::vector<int> kra[sizik];

int d[sizik][sizik];

void solve() {
    int n;
    std::cin >> n;

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            d[i][j] = 0;
        }
    }

    for (int i = 1; i <= n; i++) {
        int l;
        std::cin >> l;

        for (int j = 0; j < l; j++) {
            int a, b;
            std::cin >> a >> b;

            d[i][a] = b;
        }
    }

    for (int k = 1; k <= n; ++k) {
        for (int i = 1; i <= n; ++i) {
            if (d[i][k] == 0) continue;
            for (int j = 1; j <= n; ++j) {
                if (d[k][j] == 0) continue;
                int nd = std::min(d[i][k], d[k][j]);
                if (nd > d[i][j]) {
                    d[i][j] = nd;
                }
            }
        }
    }

    int q;
    std::cin >> q;

    for (; q > 0; q--) {
        int a, b;
        std::cin >> a >> b;

        int ans = d[a][b];
        if (d[a][b] == INF) ans = 0;
        std::cout << ans << std::endl;
    }
}

int32_t main() {
#ifndef GARY_DBG
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);
#endif

    int t = 1;
    // std::cin >> t;

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}