3409 - 维护序列

给定一个长度为 n 的序列 a,编号从 1 到 n。要求支持下面几种操作:

1.给一个区间 [l, r] 加上一个数 x;
2.把一个区间 [l, r] 里小于 x 的数变成 x;
3.把一个区间 [l, r] 里大于 x 的数变成 x;
4.求区间 [l, r] 的和;
5.求区间 [l, r] 的最大值;
6.求区间 [l, r] 的最小值。

输入

第一行一个整数 n 表示序列长度。

第二行 n 个整数 ai 表示初始序列。

第三行一个整数 m 表示操作个数。

接下来 m 行,每行三或四个整数,对应一个题目中所描述的操作。

输出

对于每个 4, 5, 6 类型的操作输出一行一个整数表示答案。

样例

输入

2
1 2
2
2 1 2 2
4 1 2

输出

4

提示

时间限制 2 秒
内存限制 512 MB
讨论 统计
上一题 下一题