/*
给定数组a[],表示每种资源数目标量,一开始都是0
每次增,删,改一个三元组(s,t,u):如果资源s数量t,那么资源u+1,可链式增加
问每次修改后达到目标资源的最少用时
结论:直接开数组cnt[i]累计每种资源通过三元组增加的值,多出a[i]的部分去掉就是贡献
*/
#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define ll long long
map<pair<int,int>,int>mp;
ll n,q,a[N],cnt[N],sum;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i];
cin>>q;
while(q--){
int s,t,u;
scanf("%d%d%d",&s,&t,&u);
pair<int,int>p=make_pair(s,t);
if(mp[p]!=0){
int last=mp[p];
if(cnt[last]<=a[last])sum++;
cnt[last]--;
}
mp[p]=u;
if(cnt[u]<a[u])sum--;
cnt[u]++;
cout<<sum<<'\n';
}
}