# 部分点4 import sys from atcoder.dsu import DSU input = sys.stdin.readline N,M,Q = map(int, input().split()) A = list(map(int, input().split())) A = [x-1 for x in A] U = [0]*M V = [0]*M W = [0]*M B = [] for j in range(M): U[j],V[j],W[j] = map(int, input().split()) U[j]-=1 V[j]-=1 B.append((W[j],j)) B=sorted(B) ans = [10**9+1] * N uf = DSU(N) color = A[:] pending = [[] for _ in range(N)] for i in range(N): pending[i].append(i) def check(u,w): root = uf.leader(u) for v in pending[root]: ans[v]=w pending[root].clear() for j in range(M): s,k = B[j] if not uf.same(U[k],V[k]): a = uf.leader(U[k]) b = uf.leader(V[k]) if (color[a]!=-1) and (color[b]==-1): color[a]=-1 check(a,s) elif (color[a]==-1) and (color[b]!=-1): color[b]=-1 check(b,s) elif (color[a]!=-1) and (color[b]!=-1): if color[a] != color[b]: color[a]=-1 color[b]=-1 check(a,s) check(b,s) n = uf.merge(a,b) if n!=a: for p in pending[a]: pending[n].append(p) pending[a].clear() if n!=b: for p in pending[b]: pending[n].append(p) pending[b].clear() for k in range(Q): s,c = map(int,input().split()) if c==1: print(0) if c==2: if ans[s-1]==10**9+1: print(-1) else: print(ans[s-1])