1e9+7;
int n,m;
struct node{
int l,r;
int sum,add,mul;
int sum1,add1,mul1;
int sum2,add2...sum1)%p;
tr[u].sum2=(tr[u<<1].sum2+tr[u<<1|1].sum2)%p;
}
void eval(node &u,int add,int add1,int add2...=tr[u].add2,mul=tr[u].mul;
eval(tr[u<<1],add,add1,add2,mul);
eval(tr[u<<1|1],add,add1,add2,mul...);
tr[u].add=0,tr[u].add1=0,tr[u].add2=0,tr[u].mul=1;
}
void modify(int u,int l,int r,int add,int...add1,int add2,int mul){
if(tr[u].l>=l&&tr[u].r<=r){
eval(tr[u],add,add1,add2,mul);
}