U31865 文艺平衡树(变态版)

题目背景

本题是文艺平衡树的加强版,综合了平衡树区间的大部分基本操作,当您AC本题后,您将掌握有关平衡树区间操作的大部分问题。可是,您能AC本题吗?(^_^)

题目描述

给定一个序列,请编写一种数据结构来完成以下操作: 1. 输入$l,r,k$;对区间 $[l,r]$ 每个数加上$k$; 2. 输入$l,r$;输出区间 $[l,r]$ 的和,并对$1e9+7$取模; 3. 输入$l,k$;在位置$l$后添加一个大小为$k$的节点; 4. 输入$l,r$;删除区间 $[l,r]$; 5. 输入$l,r$;输出区间 $[l,r]$ 最大值; 6. 输入$l,r$;输出区间 $[l,r]$ 最小值; 7. 输入$l,r,k$;将区间$[l,r]$的值全部改为k; 8. 输入$l,r$;反转区间 $[l,r]$; 注意:对于删除添加操作,例如在位置$i$后添加值$k$,那么$k$的位置为$i+1$,原$i+1$位置的数的位置为$i+2$,以此类推。若删除区间 $[l,r]$ 那么原$r+1$位置的数的位置变为$l$以此类推。即每个数的位置不固定,为当前序列的相对位置。

输入格式

第一行有两个正整数 $n,m$; 第二行$n$个整数,为序列初始值. 以下$m$行每行一个操作,第一个数为操作编号,后面为它所对应的输入; 保证一切输入均为非负数,且不会有错误情况($l,r$超边界等);

输出格式

对于操作2、5、6,输出对应的值,每行一个(含输出操作的)操作输出;

说明/提示

保证除求和(操作2)外其他结果均在long long范围内。 **提示:求max/min时取模会使答案错误。** 共20个测试点: 对于50%的数据$n,m