package main
import (
"bufio"
"bytes"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int64 {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
var v int64
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
v = v*10 + int64(data[idx]-'0')
idx++
}
return v
}
n := int(nextInt())
capacity := make([]int64, n+1)
filled := make([]int64, n+1)
for i := 1; i <= n; i++ {
capacity[i] = nextInt()
}
parent := make([]int, n+2)
for i := 1; i <= n+1; i++ {
parent[i] = i
}
find := func(x int) int {
root := x
for parent[root] != root {
root = parent[root]
}
for parent[x] != x {
p := parent[x]
parent[x] = root
x = p
}
return root
}
m := int(nextInt())
var out bytes.Buffer
for i := 0; i < m; i++ {
t := int(nextInt())
if t == 1 {
p := int(nextInt())
x := nextInt()
cur := find(p)
for cur <= n && x > 0 {
remain := capacity[cur] - filled[cur]
if remain > x {
filled[cur] += x
x = 0
} else {
filled[cur] = capacity[cur]
x -= remain
parent[cur] = find(cur + 1)
cur = parent[cur]
}
}
} else {
k := int(nextInt())
out.WriteString(strconv.FormatInt(filled[k], 10))
out.WriteByte('\n')
}
}
w := bufio.NewWriterSize(os.Stdout, 1<<20)
w.Write(out.Bytes())
w.Flush()
}