← Home
```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)
	}
}
```