9 5 14
7 1 4 8 5 2 6 9 3
2 8
1 6
5 7
1 3
3 9
1 5
1 8
1 5
1 4
1 8
1 3
1 5
1 5
1 7
1 7
2 3
1 2
1 1
1 2
 6 5 8
1 2 6 3 4 5
2 4
1 3
1 6
3 5
2 5
1 1
1 4
1 1
2 1
2 5
2 2
2 3
1 4
 2 1 3
1 2
1 2
1 1
1 1
1 1

6
9
5
8
1
7
0
0
0
0
0
4
0
 6
5
4
3
 2
1
0

#include <bits/stdc++.h>
 
#define ll long long
#define pb emplace_back
#define F first
#define S second
 
using namespace std;
 
const int N=2e5+5;
const int M=3e5+5;
const int Q=5e5+5;

int n,m,q;
bool al[N];
int val[N],p[N],G[N];
int a[M],b[M],bad[M];
int t[Q],c[Q],ans[Q];

set < int > st[N],S;
set < int > :: iterator it;

int P(int x) { return (p[x]^x) ? p[x]=P(p[x]) : x; }

void uni(int a,int b) {
  a=P(a),b=P(b);
  if (a==b) return ;

  if (st[a].size()>st[b].size()) 
    swap(a,b);

  for (it=st[a].begin(); it!=st[a].end(); ++it) 
    st[b].insert((*it));

  st[a].clear();
  G[b]+=G[a];
  p[a]=b;
}

main () {
  ios::sync_with_stdio(false);
  cin.tie(NULL),cout.tie(NULL);

  cin>>n>>m>>q;
  for (int i=1; i<=n; i++) {
    p[i]=i;
    cin>>val[i];
    st[i].insert(val[i]);
  }

  for (int i=1; i<=m; i++) 
    cin>>a[i]>>b[i];

  for (int i=1; i<=q; i++) {
    cin>>t[i]>>c[i];
    if (t[i]==2) bad[c[i]]=1;
  }

  for (int i=1; i<=m; i++) 
    if (!bad[i]) uni(a[i],b[i]);

  int r=0;
  for (int i=q; i>=1; i--) {
    if (t[i]==1) {
      r=P(c[i]);
      if (!st[r].size()) { ++G[r]; continue; }
      st[r].erase(st[r].find((*st[r].rbegin())));
    }
      else uni(a[c[i]],b[c[i]]);
  }

  for (int i=1; i<=n; i++) {
    r=P(i);
    if (al[r]) continue;
    for (it=st[r].begin(); it!=st[r].end(); ++it)
      S.insert((*it));
    al[r]=true;
  }

  for (int i=1; i<=n; i++) {
    p[i]=i;
    st[i].clear();
    if (S.find(val[i])==S.end())
      st[i].insert(val[i]);
  }

  for (int i=1; i<=m; i++) 
    if (!bad[i]) uni(a[i],b[i]);

  for (int i=q; i>=1; i--) {
    if (t[i]==1) {
      r=P(c[i]);
      if (G[r]) { --G[r]; continue; }
      ans[i]=(*st[r].begin());
      st[r].erase(st[r].find((*st[r].begin())));
    }
      else uni(a[c[i]],b[c[i]]);
  }

  for (int i=1; i<=q; i++) 
    if (t[i]==1) cout<<ans[i]<<"\n";
}