RT
#include <bits/stdc++.h>
using namespace std;
long long a[5001][5001],n,m;
int lowbit(int x)
{
return x&(-x);
}
void update(int x,int y,long long t)
{
for(int i=x;i<=n;i+=lowbit(i))
{
for(int j=y;j<=m;j+=lowbit(j));
{
a[i][j]+=t;
}
}
}
long long query(long long x,long long y)
{
long long res=0;
for(int i=x;i;i-=lowbit(i))
{
for(int j=y;j;j-=lowbit(j))
{
res+=a[i][j];
}
}
return res;
}
int main()
{
int x;
cin>>n>>m;
// memset(a,0,sizeof(a));
while(scanf("%d",&x)!=EOF)
{
int y,z,t,w;
if(x==1)
{
cin>>y>>z>>t;
update(y,z,t);
}
else if(x==2)
{
cin>>y>>z>>t>>w;
cout<<query(t,w)-query(y-1,w)-query(t,z-1)+query(x-1,y-1)<<endl;
}
}
return 0;
}