#include <bits/stdc++.h>
using namespace std;
const int N = 505, inf = 0x3f3f3f3f;
int n, m, k, t, q;
int d[N][N];
int main() {
cin >> n >> m;
memset(d, inf, sizeof(d));
for(int i = 1; i <= m; i++) {
int a, b, c; cin >> a >> b >> c;
d[a][b] = d[b][a] = c;
}
cin >> k >> t;
for(int i = 1; i <= k; i++) {
int a; cin >> a;
d[a][0] = t; d[0][a] = 0;
}
for(int i = 1; i <= n; i++) d[i][i] = 0;
for(int l = 0; l <= n; l++)
for(int i = 0; i <= n; i++)
for(int j = 0; j <= n; j++)
if(l != i && l != j && d[i][l] != inf && d[l][j] != inf) d[i][j] = min(d[i][j], d[i][l] + d[l][j]);
cin >> q;
for(int i = 1; i <= q; i++) {
int opt; cin >> opt;
if(opt == 1) {
int a, b, c; cin >> a >> b >> c;
if(d[a][b] <= c) continue;
d[a][b] = d[b][a] = c;
for(int j = 0; j <= n; j++)
for(int l = 0; l <= n; l++)
d[j][l] = min(d[j][l], min(d[j][a] + c + d[b][l], d[j][b] + c + d[a][l]));
} else if(opt == 2) {
int a; cin >> a;
d[a][0] = t; d[0][a] = 0;
for(int j = 0; j <= n; j++)
for(int l = 0; l <= n; l++)
d[j][l] = min(d[j][l], min(d[j][a] + t + d[0][l], d[j][0] + 0 + d[a][l]));
} else {
long long ans = 0;
for(int j = 1; j <= n; j++)
for(int l = 1; l <= n; l++)
ans += ((d[j][l] == inf || j == l)? 0: d[j][l]);
cout << ans << endl;
}
}
return 0;
}
WHY WA? https://atcoder.jp/contests/abc416/submissions/67986802