(code:)
void modify(int l,int r,ll v)
{
for(int i=l;i<=min(S*bel[l],r);++i) a[i]+=v,sum[bel[l]]+=v;
if(bel[l]!=bel[r])
for(int i=S*(bel[r]-1)+1;i<=r;++i)
a[i]+=v,sum[bel[r]]+=v;
for(int i=bel[l]+1;i<=bel[r]-1;++i) add[i]+=v;
}
ll query(int l,int r)
{
ll ans=0;
for(int i=l;i<=min(S*bel[l],r);++i) ans+=a[i]+add[bel[l]];
if(bel[l]!=bel[r])
for(int i=S*(bel[r]-1)+1;i<=r;++i)
ans+=a[i]+add[bel[r]];
for(int i=bel[l]+1;i<=bel[r]-1;++i) ans+=sum[i]+S*add[i];
return ans;
}
......
for(int i=1;i<=n;++i)
read(a[i]),bel[i]=(i-1)/S+1,sum[bel[i]]+=a[i];