#include<bits/stdc++.h>
using namespace std;
#define MAXN 50000+10
int n,blo;
int a[MAXN],bl[MAXN],tag[MAXN];
void update(int l,int r,int add)
{
for (int i=l; i<=min(bl[l]*blo,r); i++)
a[i]+=add;
if (bl[l]!=bl[r])
for (int i=(bl[r]-1)*blo+1; i<=r; i++)
a[i]+=add;
for (int i=bl[l]+1; i<=bl[r]-1; i++)
tag[i]+=add;
}
int main()
{
scanf("%d",&n),blo=sqrt(n);
for (int i=1; i<=n; i++)
bl[i]=(i-1)/blo+1;
for (int i=1; i<=n; i++)
scanf("%d",&a[i]);
for (int i=1; i<=n; i++)
{
int opt,l,r,tmp;
scanf("%d%d%d%d",&opt,&l,&r,&tmp);
if (opt)
printf("%d\n",a[r]+tag[bl[r]]);
else
update(l,r,tmp);
}
return 0;
}