N, M = map(int, input().split()) G = [set() for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) G[u-1].add(v-1) G[v-1].add(u-1) A = list(map(int, input().split())) Q = int(input()) query = [list(map(int, input().split())) for _ in range(Q)] route = int((10**5)**0.5) big = set() D = dict() for i in range(N): if route <= len(G[i]): big.add(i) SUM = 0 for j in G[i]: SUM += A[j] D[i] = SUM for i in range(Q): if query[i][0] == 1: u, v = query[i][1:] u, v = u-1, v-1 if v in G[u]: G[u].remove(v) G[v].remove(u) if route <= len(G[u]): D[u] -= A[v] if route <= len(G[v]): D[v] -= A[u] if len(G[u])+1 == route: big.remove(u) if len(G[v])+1 == route: big.remove(v) else: G[u].add(v) G[v].add(u) if route+1 <= len(G[u]): D[u] += A[v] if route+1 <= len(G[v]): D[v] += A[u] if len(G[u]) == route: big.add(u) SUM = 0 for j in G[u]: SUM += A[j] D[u] = SUM if len(G[v]) == route: big.add(v) SUM = 0 for j in G[v]: SUM += A[j] D[v] = SUM elif query[i][0] == 2: p, a = query[i][1:] p -= 1 pre = A[p] for b in big: if p in G[b]: D[b] -= pre D[b] += a A[p] = a else: c = query[i][1]-1 if c in big: print(D[c]) else: ans = 0 for j in G[c]: ans += A[j] print(ans)