#include <bits/stdc++.h>
using namespace std;
const int N = 210;
int w[N][N];
int main() {
int n, m;
cin >> n >> m;
memset(w, -1, sizeof w);
while (m--) {
int a, b, c;
cin >> a >> b >> c;
w[a][b] = w[b][a] = c;
}
int k;
cin >> k;
vector<pair<int, int>> legal;
int cost = 1e9;
for (int i = 1; i <= k; i++) {
int qr;
cin >> qr;
//cout << "qr = " << " ";
vector<int> v(qr + 2, 0);
bool ok = 1;
int res = 0;
set<int> S;
for (int u = 1; u <= qr; u++) {
int x;
cin >> x;
S.insert(x);
//cout << "x == " << x << " ";
if (w[v[u - 1]][x] == -1) {
ok = false;
}
res += w[v[u - 1]][x];
v[u] = x;
}
if (S.size() != n) ok = false;
if (qr != n) ok = false;
if (w[v[qr]][0] == -1) ok = false;
if (!ok) continue;
res += w[v[qr]][0];
cost = min(cost, res);
legal.push_back({res, i});
}
cout << legal.size() << endl;
for (int i = 0; i < legal.size(); i++) {
if (legal[i].first == cost) {
cout << legal[i].second << " " << cost << "\n";
break;
}
}
return 0;
}