← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

var parent []int

func find(i int) int {
	if parent[i] == i {
		return i
	}
	parent[i] = find(parent[i])
	return parent[i]
}

func readInt(reader *bufio.Reader) int {
	var res int
	var b byte
	var err error
	for {
		b, err = reader.ReadByte()
		if err != nil {
			return 0
		}
		if b >= '0' && b <= '9' {
			res = int(b - '0')
			break
		}
	}
	for {
		b, err = reader.ReadByte()
		if err != nil || b < '0' || b > '9' {
			break
		}
		res = res*10 + int(b-'0')
	}
	return res
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	n := readInt(reader)

	capacity := make([]int, n+2)
	for i := 1; i <= n; i++ {
		capacity[i] = readInt(reader)
	}

	parent = make([]int, n+2)
	for i := 1; i <= n+1; i++ {
		parent[i] = i
	}

	water := make([]int, n+2)

	m := readInt(reader)

	for i := 0; i < m; i++ {
		typeQuery := readInt(reader)
		if typeQuery == 1 {
			p := readInt(reader)
			x := readInt(reader)
			curr := find(p)
			for x > 0 && curr <= n {
				add := x
				if capacity[curr]-water[curr] < add {
					add = capacity[curr] - water[curr]
				}
				water[curr] += add
				x -= add
				if water[curr] == capacity[curr] {
					parent[curr] = curr + 1
				}
				curr = find(curr)
			}
		} else {
			k := readInt(reader)
			fmt.Fprintln(writer, water[k])
		}
	}
}
```