```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
fmt.Fscan(reader, &n)
a := make([]int64, n+1)
var ans int64
for i := 1; i <= n; i++ {
fmt.Fscan(reader, &a[i])
ans += a[i]
}
var q int
fmt.Fscan(reader, &q)
d := make([]int64, n+1)
type pair struct {
s, t int
}
milestones := make(map[pair]int)
max := func(x, y int64) int64 {
if x > y {
return x
}
return y
}
for i := 0; i < q; i++ {
var s, t, u int
fmt.Fscan(reader, &s, &t, &u)
p := pair{s, t}
if v, exists := milestones[p]; exists {
ans -= max(0, a[v]-d[v])
d[v]--
ans += max(0, a[v]-d[v])
delete(milestones, p)
}
if u != 0 {
ans -= max(0, a[u]-d[u])
d[u]++
ans += max(0, a[u]-d[u])
milestones[p] = u
}
fmt.Fprintln(writer, ans)
}
}
```