#define lson l,m,rt<<1
#define rson m+1 r,rt<<1|1
void update(int rt){
sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void build(int l,int r,int rt){
if(l==r){
sum[rt]=z[l];
return ;
}
int m=(l+r)>>1;
build(lson);
build(rson);
update(rt);
}
build(1,n,1);
int query(int l,int r,int rt,int nowl,int nowr){
if(nowl<=l&&r<=nowr) return sum[rt];
int m=(l+r)>>1;
int ans=0;
if(nowl<=m) ans+=query(lson,nowl,nowr);
if(m<nowr) ans+=query(rson,nowl,nowr);
return ans;
}
query(1,n,1,l,r);
void modify(int l,int r,int rt,int p,int v)
{
if(l==r){
sum[rt]=v;
return;
}
int m=(l+r)>>1;
if(p<=m) modify(lson,p,v);
else modify(rson,p,v);
update(rt);
}
modify(1,n,1,p,v);
/*线段树*/
#define lb(x) ((x)&(-x))
int modify(int p,int v){
for(;p<=n;p+=lb(p)) z[p]+=v;
}
int query(int p)
{
int ans=0;
for(;p;p-=lb(p)) ans+=a[p];
return ans;
}
/*树状数组*/
int s=(int)sqrt(n);
for (int a=1;a<=n;a++)
belong[a]=(a-1)/s+1;
for (int a=1;a<=n;a++)
right[belong[a]]=a;
for (int a=n;a>=1;a--)
left[belong[a]]=a;
for (int a=1;a<=n;a++)
sum[belong[a]]+=z[a];
int query(int l,int r) {
int ans=0;
if (belong[l]==belong[r]) {
for (int a=l;a<=r;a++)
ans+=z[a]+col[belong[a]];
}
else {
for (int a=l;a<=right[belong[l]];a++)
ans+=z[a]+col[belong[a]];
for (int a=belong[l]+1;a<belong[r];a++)
ans+=sum[a];
for (int a=left[belong[r]];a<=r;a++)
ans+=z[a]+col[belong[a]];
}
return ans;
}
void modify(int l,int r,int v) {
if (belong[l]==belong[r]) {
for (int a=l;a<=r;a++) {
z[a]+=v;
sum[belong[a]]+=v;
}
}
else {
for (int a=l;a<=right[belong[l]];a++) {
z[a]+=v;
sum[belong[a]]+=v;
}
for (int a=belong[l]+1;a<belong[r];a++) {
col[a]+=v;
sum[a]+=(right[a]-left[a]+1)*v;
}
for (int a=left[belong[r]];a<=r;a++) {
z[a]+=v;
sum[belong[a]]+=v;
}
}
}
int ans=0;
for (int a=1;a<=n;a++)
ans += a;
for (int a=1;a<=n;a+=2) {
ans += a;
ans += a+1;
}
/*循环展开*/