#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
void build(ll a[],ll segtree[],ll n)
{
ll i;
i=0;
while(i<n)
{
segtree[n+i]=a[i];
i++;
}
i=n-1;
while(i>=1)
{
segtree[i]=segtree[2*i]+segtree[2*i+1];
i--;
}
i=1;
while(i<2*n)
{
cout<<segtree[i]<<" ";
i++;
}
}
void update(ll segtree[],ll index,ll value,ll n)
{
index=index+n;
segtree[index]=value; //jahaan__hai___vahaaan___thuso___
while(index>1)
{
index=index/2;
segtree[index] = segtree[2*index] + segtree[2*index+1] ;
}
}
ll range(ll segtree[],ll left,ll right,ll n)
{
left=left+n;
right=right+n;
ll mi=0;
while(left<right)
{
if(left & 1)
{
mi = (mi + segtree[left]);
left++;
}
if (right & 1)
{
right--;
mi = (mi + segtree[right]);
}
left /= 2;
right /= 2;
}
return mi;
}
int main()
{
ll n;
cin>>n;
ll a[n];
ll i=0;
while(i<n)
{
cin>>a[i];
i++;
}
ll segtree[4*n];
build(a,segtree,n);
//--0--based--indexing--when---updating!!!!!
update(segtree,4,6,n);
cout<<"\n";
i=1;
while(i<2*n)
{
cout<<segtree[i]<<" ";
i++;
}
ll sex=range(segtree,0,5,n); //it will give sum...from [0,4]..remember that!! always l+1
cout<<sex<<"\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CgoKdm9pZCBidWlsZChsbCBhW10sbGwgc2VndHJlZVtdLGxsIG4pCnsKCmxsIGk7CgppPTA7CndoaWxlKGk8bikKewogICAgc2VndHJlZVtuK2ldPWFbaV07CiAgICBpKys7Cn0KCmk9bi0xOwp3aGlsZShpPj0xKQp7CiAgICBzZWd0cmVlW2ldPXNlZ3RyZWVbMippXStzZWd0cmVlWzIqaSsxXTsgICAKICAgIGktLTsKfQoKaT0xOwp3aGlsZShpPDIqbikKewogICAgCiAgICAKICAgIGNvdXQ8PHNlZ3RyZWVbaV08PCIgIjsKICAgIAogICAgaSsrOwp9CgogCiAgICAKfQoKCnZvaWQgdXBkYXRlKGxsIHNlZ3RyZWVbXSxsbCBpbmRleCxsbCB2YWx1ZSxsbCBuKQp7CiAgICAKICAgIAogICAgaW5kZXg9aW5kZXgrbjsKICAgIAogICAgc2VndHJlZVtpbmRleF09dmFsdWU7IC8vamFoYWFuX19oYWlfX192YWhhYWFuX19fdGh1c29fX18KICAgIAogICAgd2hpbGUoaW5kZXg+MSkKICAgIHsKICAgICAgICAKICAgICAgICAKICAgICAgICBpbmRleD1pbmRleC8yOwogICAgICAgIAogICAgIHNlZ3RyZWVbaW5kZXhdID0gc2VndHJlZVsyKmluZGV4XSArIHNlZ3RyZWVbMippbmRleCsxXSA7ICAgCiAgICAgICAgCiAgICB9CiAgfQoKCgoKbGwgcmFuZ2UobGwgc2VndHJlZVtdLGxsIGxlZnQsbGwgcmlnaHQsbGwgbikKewogICAgCiAgICAgbGVmdD1sZWZ0K247IAogICAgcmlnaHQ9cmlnaHQrbjsgCiAgCiAgICBsbCBtaT0wOwogIAogICAgd2hpbGUobGVmdDxyaWdodCkgCiAgICB7IAogIAogICAgICAgIGlmKGxlZnQgJiAxKSAKICAgICAgICB7IAogICAgICAgIAogICAgICAgIG1pID0gKG1pICsgc2VndHJlZVtsZWZ0XSk7CiAgICAgICAgICAgIGxlZnQrKzsgCiAgICAgICAgfSAKICAKICAgICAgICAKICAgICAgICBpZiAocmlnaHQgJiAxKQogICAgICAgIHsgCiAgCiAgICAgICAgICAgIAogICAgICAgICAgICByaWdodC0tOyAKICAKICAgICAgICAgICAgbWkgPSAobWkgKyBzZWd0cmVlW3JpZ2h0XSk7IAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICB9IAogIAogIAogICAgICAgCiAgICAgICAgbGVmdCAvPSAyOyAKICAgICAgICByaWdodCAvPSAyOyAKICAKICAKICAgIH0gCiAgICAKICAgIHJldHVybiBtaTsgCiAgICAKICAgIAp9CgoKCgoKCmludCBtYWluKCkKewogICAgbGwgbjsKICAgIGNpbj4+bjsKICAgIGxsIGFbbl07CiAgICAKICAgIGxsIGk9MDsKICAgIHdoaWxlKGk8bikKICAgIHsKICAgICAgICAKICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgCiAgICAgICAgCiAgICBpKys7CiAgICB9CiAgICAKICAgIGxsIHNlZ3RyZWVbNCpuXTsKICAgIAogICAgCiAgICAKICAgIGJ1aWxkKGEsc2VndHJlZSxuKTsKICAgIAogICAgCiAgICAvLy0tMC0tYmFzZWQtLWluZGV4aW5nLS13aGVuLS0tdXBkYXRpbmchISEhIQogICAgCiAgICAKICAgIHVwZGF0ZShzZWd0cmVlLDQsNixuKTsKICAgIAogICAgY291dDw8IlxuIjsKICAgIAogICAgaT0xOwp3aGlsZShpPDIqbikKewogICAgCiAgICAKICAgIGNvdXQ8PHNlZ3RyZWVbaV08PCIgIjsKICAgIAogICAgaSsrOwp9CgoKCiBsbCBzZXg9cmFuZ2Uoc2VndHJlZSwwLDUsbik7IC8vaXQgd2lsbCBnaXZlIHN1bS4uLmZyb20gWzAsNF0uLnJlbWVtYmVyIHRoYXQhISBhbHdheXMgbCsxCiAKIAogCiBjb3V0PDxzZXg8PCJcbiI7CiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgcmV0dXJuIDA7Cn0K