#include <bits/stdc++.h> using namespace std; using i64 = int64_t; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m, k; cin >> n >> m; vector<tuple<int, int, int>> vt; for (int i = 0, u, v, w; i < m; i += 1) { cin >> u >> v >> w; vt.emplace_back(w, u, v); } cin >> k; vector<vector> q(k); for (auto &qi : q) { int s; cin >> s; qi.resize(s); for (int &qij : qi) { cin >> qij; } } sort(vt.begin(), vt.end()); int l = 0, r = m - 1; while (l < r) { int m = (l + r) / 2; vector p(n + 1); for (int i = 1; i <= n; i += 1) { p[i] = i; } function<int(int)> fp = [&](int u) { return p[u] == u ? u : p[u] = fp(p[u]); }; auto [wm, _, __] = vt[m]; for (auto [w, u, v] : vt) { if (w <= wm) { u = fp(u); v = fp(v); p[u] = v; } }; int ok = 1; for (auto &qi : q) { for (int qij : qi) { ok &= fp(qij) == fp(qi[0]); } } if (ok) { r = m; } else { l = m + 1; } } auto [wl, _, __] = vt[l]; cout << wl; }