1287:积木

时间限制: 2 S | 内存限制: 65536 KB
Accept: 44 | Submit: 160
[提交] [状态] [讨论版]
描述

给你 n 堆积木,第 i 堆积木有 a[i] 个,现在你可以执行以下三种操作:

1 x y:在第 x 堆积木上添加 y 个积木,即 a[x] += y。(1 <= x <= n,1 <= y <= 1e5)

2 x y:从第 x 堆积木上拿走 y 个积木,如果不足 y 个,则全部拿完。(1 <= x <= n,1 <= y <= 1e5)

3 x y:交换第 x 堆积木和第 y 堆积木,即 swap(a[x],a[y])。(1 <= x、y <= n)

输入

第一行是一个正整数 n 代表总共有 n 堆积木。(1 <= n <= 1e5)

第二行是 n 个正整数分别代表 a[1] ~ a[n]。(1 <= a[i] <= 1e5,1 <= i <=n)

第三行是一个整数 m 代表操作的次数。(0 <= m <= 1e5)

最后是 m 行,每行三个数字代表一个如描述所述的操作。

输出

在 m 次操作结束以后积木的总数,然后换行。

样例输入

5

1 2 3 4 5

10

1 1 3

1 2 4

2 1 9

1 1 5

3 4 5

2 5 5

1 3 2

2 2 3

3 1 5

2 1 1

样例输出

18

HINT


来源
TKK-ICPC Round#6