#include using namespace std; void fast_io() { ios::sync_with_stdio(false); std::cin.tie(nullptr); } int main() { fast_io(); int n, m; cin >> n >> m; vector> g(n); for (int i = 0; i < m; i++) { int x, y; cin >> x >> y; x--, y--; g[x].insert(y); g[y].insert(x); } vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } const int B = 300; vector> g_b(n); vector val(n); for (int i = 0; i < n; i++) { for (int j : g[i]) { if (g[j].size() > B) { g_b[i].insert(j); } else { val[i] += a[j]; } } } int q; cin >> q; for (; q--;) { int com; cin >> com; if (com == 1) { int u, v; cin >> u >> v; u--, v--; if (g[u].count(v)) { if (g[u].size() <= B) { val[v] -= a[u]; } else { g_b[v].erase(u); } if (g[v].size() <= B) { val[u] -= a[v]; } else { g_b[u].erase(v); } g[u].erase(v); g[v].erase(u); if (g[u].size() == B) { for (int j : g[u]) { val[j] += a[u]; g_b[j].erase(u); } } if (g[v].size() == B) { for (int j : g[v]) { val[j] += a[v]; g_b[j].erase(v); } } } else { if (g[u].size() <= B) { val[v] += a[u]; } else { g_b[v].insert(u); } if (g[v].size() <= B) { val[u] += a[v]; } else { g_b[u].insert(v); } g[u].insert(v); g[v].insert(u); if (g[u].size() == B + 1) { for (int j : g[u]) { val[j] -= a[u]; g_b[j].insert(u); } } if (g[v].size() == B + 1) { for (int j : g[v]) { val[j] -= a[v]; g_b[j].insert(v); } } } } else if (com == 2) { int p; long long ap; cin >> p >> ap; p--; if (g[p].size() <= B) { for (int j : g[p]) { val[j] += ap - a[p]; } } a[p] = ap; } else if (com == 3) { int c; cin >> c; c--; long long ans = val[c]; for (int j : g_b[c]) { ans += a[j]; } cout << ans << "\n"; } } }