#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Rec{
int type;
int ru, rv;
int prev_sz;
ll prev_sum;
ll prev_min;
int prev_edges;
ll prev_total;
};
int n, k, Qn;
vector<ll> cval;
vector<int> U, V;
vector<vector<int>> seg;
vector<int> qt, qx;
vector<int> parent_, sz_, edges_;
vector<ll> sum_, mn_;
ll total_ans = 0;
vector<Rec> stck;
int find_root(int x){
while(parent_[x]!=x) x=parent_[x];
return x;
}
ll contrib(int r){
return sum_[r] - ((edges_[r] < sz_[r]) ? mn_[r] : 0LL);
}
void add_edge_union(int a,int b){
int ra=find_root(a), rb=find_root(b);
if(ra==rb){
Rec rec;
rec.type=0; rec.ru=ra; rec.prev_edges=edges_[ra]; rec.prev_total=total_ans;
total_ans -= contrib(ra);
edges_[ra] += 1;
total_ans += contrib(ra);
stck.push_back(rec);
return;
}
if(sz_[ra] < sz_[rb]) swap(ra,rb);
Rec rec;
rec.type=1; rec.ru=ra; rec.rv=rb;
rec.prev_sz=sz_[ra]; rec.prev_sum=sum_[ra]; rec.prev_min=mn_[ra]; rec.prev_edges=edges_[ra];
rec.prev_total=total_ans;
total_ans -= contrib(ra);
total_ans -= contrib(rb);
parent_[rb]=ra;
sz_[ra] += sz_[rb];
sum_[ra] += sum_[rb];
mn_[ra] = min(mn_[ra], mn_[rb]);
edges_[ra] += edges_[rb] + 1;
total_ans += contrib(ra);
stck.push_back(rec);
}
void rollback(int snap){
while((int)stck.size() > snap){
Rec rec = stck.back(); stck.pop_back();
total_ans = rec.prev_total;
if(rec.type==0){
edges_[rec.ru] = rec.prev_edges;
}else{
parent_[rec.rv]=rec.rv;
sz_[rec.ru]=rec.prev_sz;
sum_[rec.ru]=rec.prev_sum;
mn_[rec.ru]=rec.prev_min;
edges_[rec.ru]=rec.prev_edges;
}
}
}
void add_interval(int node,int l,int r,int ql,int qr,int id){
if(qr<=l || r<=ql) return;
if(ql<=l && r<=qr){ seg[node].push_back(id); return; }
int m=(l+r)>>1;
add_interval(node<<1,l,m,ql,qr,id);
add_interval(node<<1|1,m,r,ql,qr,id);
}
vector<ll> outv;
void dfs_seg(int node,int l,int r){
int snap = stck.size();
for(int id: seg[node]) add_edge_union(U[id], V[id]);
if(l+1==r){
if(l>=1 && l<=Qn) outv[l]=total_ans;
}else{
int m=(l+r)>>1;
dfs_seg(node<<1,l,m);
dfs_seg(node<<1|1,m,r);
}
rollback(snap);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n>>k>>Qn;
cval.assign(n+1,0);
for(int i=1;i<=n;i++) cin>>cval[i];
U.assign(k+1,0); V.assign(k+1,0);
for(int i=1;i<=k;i++) cin>>U[i]>>V[i];
qt.resize(Qn+1); qx.resize(Qn+1);
for(int i=1;i<=Qn;i++){ cin>>qt[i]>>qx[i]; }
vector<int> on(k+1,1), last(k+1,1);
vector<vector<pair<int,int>>> intervals(k+1);
for(int i=1;i<=Qn;i++){
int t=qt[i], p=qx[i];
if(t==1){
if(on[p]){ intervals[p].push_back({last[p],i}); on[p]=0; }
}else{
if(!on[p]){ last[p]=i; on[p]=1; }
}
}
for(int e=1;e<=k;e++){
if(on[e]) intervals[e].push_back({last[e],Qn+1});
}
seg.assign(4*(Qn+2),{});
for(int e=1;e<=k;e++){
for(auto iv: intervals[e]){
if(iv.first<iv.second) add_interval(1,1,Qn+1,iv.first,iv.second,e);
}
}
parent_.resize(n+1);
sz_.resize(n+1,1);
sum_.resize(n+1);
mn_.resize(n+1);
edges_.resize(n+1,0);
for(int i=1;i<=n;i++){
parent_[i]=i;
sum_[i]=cval[i];
mn_[i]=cval[i];
}
total_ans=0;
outv.assign(Qn+1,0);
dfs_seg(1,1,Qn+1);
for(int i=1;i<=Qn;i++) cout<<outv[i]<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCnN0cnVjdCBSZWN7CiAgICBpbnQgdHlwZTsKICAgIGludCBydSwgcnY7CiAgICBpbnQgcHJldl9zejsKICAgIGxsIHByZXZfc3VtOwogICAgbGwgcHJldl9taW47CiAgICBpbnQgcHJldl9lZGdlczsKICAgIGxsIHByZXZfdG90YWw7Cn07CgppbnQgbiwgaywgUW47CnZlY3RvcjxsbD4gY3ZhbDsKdmVjdG9yPGludD4gVSwgVjsKCnZlY3Rvcjx2ZWN0b3I8aW50Pj4gc2VnOwp2ZWN0b3I8aW50PiBxdCwgcXg7Cgp2ZWN0b3I8aW50PiBwYXJlbnRfLCBzel8sIGVkZ2VzXzsKdmVjdG9yPGxsPiBzdW1fLCBtbl87CmxsIHRvdGFsX2FucyA9IDA7CnZlY3RvcjxSZWM+IHN0Y2s7CgppbnQgZmluZF9yb290KGludCB4KXsKICAgIHdoaWxlKHBhcmVudF9beF0hPXgpIHg9cGFyZW50X1t4XTsKICAgIHJldHVybiB4Owp9CgpsbCBjb250cmliKGludCByKXsKICAgIHJldHVybiBzdW1fW3JdIC0gKChlZGdlc19bcl0gPCBzel9bcl0pID8gbW5fW3JdIDogMExMKTsKfQoKdm9pZCBhZGRfZWRnZV91bmlvbihpbnQgYSxpbnQgYil7CiAgICBpbnQgcmE9ZmluZF9yb290KGEpLCByYj1maW5kX3Jvb3QoYik7CiAgICBpZihyYT09cmIpewogICAgICAgIFJlYyByZWM7CiAgICAgICAgcmVjLnR5cGU9MDsgcmVjLnJ1PXJhOyByZWMucHJldl9lZGdlcz1lZGdlc19bcmFdOyByZWMucHJldl90b3RhbD10b3RhbF9hbnM7CiAgICAgICAgdG90YWxfYW5zIC09IGNvbnRyaWIocmEpOwogICAgICAgIGVkZ2VzX1tyYV0gKz0gMTsKICAgICAgICB0b3RhbF9hbnMgKz0gY29udHJpYihyYSk7CiAgICAgICAgc3Rjay5wdXNoX2JhY2socmVjKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZihzel9bcmFdIDwgc3pfW3JiXSkgc3dhcChyYSxyYik7CiAgICBSZWMgcmVjOwogICAgcmVjLnR5cGU9MTsgcmVjLnJ1PXJhOyByZWMucnY9cmI7CiAgICByZWMucHJldl9zej1zel9bcmFdOyByZWMucHJldl9zdW09c3VtX1tyYV07IHJlYy5wcmV2X21pbj1tbl9bcmFdOyByZWMucHJldl9lZGdlcz1lZGdlc19bcmFdOwogICAgcmVjLnByZXZfdG90YWw9dG90YWxfYW5zOwogICAgdG90YWxfYW5zIC09IGNvbnRyaWIocmEpOwogICAgdG90YWxfYW5zIC09IGNvbnRyaWIocmIpOwogICAgcGFyZW50X1tyYl09cmE7CiAgICBzel9bcmFdICs9IHN6X1tyYl07CiAgICBzdW1fW3JhXSArPSBzdW1fW3JiXTsKICAgIG1uX1tyYV0gPSBtaW4obW5fW3JhXSwgbW5fW3JiXSk7CiAgICBlZGdlc19bcmFdICs9IGVkZ2VzX1tyYl0gKyAxOwogICAgdG90YWxfYW5zICs9IGNvbnRyaWIocmEpOwogICAgc3Rjay5wdXNoX2JhY2socmVjKTsKfQoKdm9pZCByb2xsYmFjayhpbnQgc25hcCl7CiAgICB3aGlsZSgoaW50KXN0Y2suc2l6ZSgpID4gc25hcCl7CiAgICAgICAgUmVjIHJlYyA9IHN0Y2suYmFjaygpOyBzdGNrLnBvcF9iYWNrKCk7CiAgICAgICAgdG90YWxfYW5zID0gcmVjLnByZXZfdG90YWw7CiAgICAgICAgaWYocmVjLnR5cGU9PTApewogICAgICAgICAgICBlZGdlc19bcmVjLnJ1XSA9IHJlYy5wcmV2X2VkZ2VzOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBwYXJlbnRfW3JlYy5ydl09cmVjLnJ2OwogICAgICAgICAgICBzel9bcmVjLnJ1XT1yZWMucHJldl9zejsKICAgICAgICAgICAgc3VtX1tyZWMucnVdPXJlYy5wcmV2X3N1bTsKICAgICAgICAgICAgbW5fW3JlYy5ydV09cmVjLnByZXZfbWluOwogICAgICAgICAgICBlZGdlc19bcmVjLnJ1XT1yZWMucHJldl9lZGdlczsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgYWRkX2ludGVydmFsKGludCBub2RlLGludCBsLGludCByLGludCBxbCxpbnQgcXIsaW50IGlkKXsKICAgIGlmKHFyPD1sIHx8IHI8PXFsKSByZXR1cm47CiAgICBpZihxbDw9bCAmJiByPD1xcil7IHNlZ1tub2RlXS5wdXNoX2JhY2soaWQpOyByZXR1cm47IH0KICAgIGludCBtPShsK3IpPj4xOwogICAgYWRkX2ludGVydmFsKG5vZGU8PDEsbCxtLHFsLHFyLGlkKTsKICAgIGFkZF9pbnRlcnZhbChub2RlPDwxfDEsbSxyLHFsLHFyLGlkKTsKfQoKdmVjdG9yPGxsPiBvdXR2OwoKdm9pZCBkZnNfc2VnKGludCBub2RlLGludCBsLGludCByKXsKICAgIGludCBzbmFwID0gc3Rjay5zaXplKCk7CiAgICBmb3IoaW50IGlkOiBzZWdbbm9kZV0pIGFkZF9lZGdlX3VuaW9uKFVbaWRdLCBWW2lkXSk7CiAgICBpZihsKzE9PXIpewogICAgICAgIGlmKGw+PTEgJiYgbDw9UW4pIG91dHZbbF09dG90YWxfYW5zOwogICAgfWVsc2V7CiAgICAgICAgaW50IG09KGwrcik+PjE7CiAgICAgICAgZGZzX3NlZyhub2RlPDwxLGwsbSk7CiAgICAgICAgZGZzX3NlZyhub2RlPDwxfDEsbSxyKTsKICAgIH0KICAgIHJvbGxiYWNrKHNuYXApOwp9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGNpbj4+bj4+az4+UW47CiAgICBjdmFsLmFzc2lnbihuKzEsMCk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykgY2luPj5jdmFsW2ldOwogICAgVS5hc3NpZ24oaysxLDApOyBWLmFzc2lnbihrKzEsMCk7CiAgICBmb3IoaW50IGk9MTtpPD1rO2krKykgY2luPj5VW2ldPj5WW2ldOwogICAgcXQucmVzaXplKFFuKzEpOyBxeC5yZXNpemUoUW4rMSk7CiAgICBmb3IoaW50IGk9MTtpPD1RbjtpKyspeyBjaW4+PnF0W2ldPj5xeFtpXTsgfQogICAgdmVjdG9yPGludD4gb24oaysxLDEpLCBsYXN0KGsrMSwxKTsKICAgIHZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsaW50Pj4+IGludGVydmFscyhrKzEpOwogICAgZm9yKGludCBpPTE7aTw9UW47aSsrKXsKICAgICAgICBpbnQgdD1xdFtpXSwgcD1xeFtpXTsKICAgICAgICBpZih0PT0xKXsKICAgICAgICAgICAgaWYob25bcF0peyBpbnRlcnZhbHNbcF0ucHVzaF9iYWNrKHtsYXN0W3BdLGl9KTsgb25bcF09MDsgfQogICAgICAgIH1lbHNlewogICAgICAgICAgICBpZighb25bcF0peyBsYXN0W3BdPWk7IG9uW3BdPTE7IH0KICAgICAgICB9CiAgICB9CiAgICBmb3IoaW50IGU9MTtlPD1rO2UrKyl7CiAgICAgICAgaWYob25bZV0pIGludGVydmFsc1tlXS5wdXNoX2JhY2soe2xhc3RbZV0sUW4rMX0pOwogICAgfQogICAgc2VnLmFzc2lnbig0KihRbisyKSx7fSk7CiAgICBmb3IoaW50IGU9MTtlPD1rO2UrKyl7CiAgICAgICAgZm9yKGF1dG8gaXY6IGludGVydmFsc1tlXSl7CiAgICAgICAgICAgIGlmKGl2LmZpcnN0PGl2LnNlY29uZCkgYWRkX2ludGVydmFsKDEsMSxRbisxLGl2LmZpcnN0LGl2LnNlY29uZCxlKTsKICAgICAgICB9CiAgICB9CiAgICBwYXJlbnRfLnJlc2l6ZShuKzEpOwogICAgc3pfLnJlc2l6ZShuKzEsMSk7CiAgICBzdW1fLnJlc2l6ZShuKzEpOwogICAgbW5fLnJlc2l6ZShuKzEpOwogICAgZWRnZXNfLnJlc2l6ZShuKzEsMCk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgcGFyZW50X1tpXT1pOwogICAgICAgIHN1bV9baV09Y3ZhbFtpXTsKICAgICAgICBtbl9baV09Y3ZhbFtpXTsKICAgIH0KICAgIHRvdGFsX2Fucz0wOwogICAgb3V0di5hc3NpZ24oUW4rMSwwKTsKICAgIGRmc19zZWcoMSwxLFFuKzEpOwogICAgZm9yKGludCBpPTE7aTw9UW47aSsrKSBjb3V0PDxvdXR2W2ldPDwiXG4iOwogICAgcmV0dXJuIDA7Cn0K