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