#include <iostream>
#include <fstream>
using namespace std;
ifstream in("batog2d.in");
ofstream out("batog2d.out");
#define ll long long
#define ull unsigned long long
#define pb push_back
const int NMax = 1e5 + 5;
const int sqMax = 320;
int N,M;
int a[NMax][NMax],hBit[NMax][sqMax],vBit[sqMax][NMax],sqBit[sqMax][sqMax]
hAdd[NMax][sqMax],vAdd[sqMax][NMax],sqAdd[sqMax][sqMax];
void update(int,int,int,int,int);
void hUpdate(int,int,int,int,int);
void vUpdate(int,int,int,int,int);
void sqUpdate(int,int,int,int,int);
int query(int,int,int,int);
int hQuery(int,int,int,int);
int vQuery(int,int,int,int);
int sqQuery(int,int,int,int);
int main() {
in>>N>>M;
int root = 1;
while (root*root <= N) {
++root;
}
--root;
for (int i=1;i <= N;++i) {
for (int j=1;j <= N;++j) {
in>>a[i][j];
int idx = (i-1)/root + 1,
jdx = (j-1)/root + 1;
hBit[i][jdx] = max(hBit[i][jdx],a[i][j]);
vBit[idx][j] = max(vBit[idx][j],a[i][j]);
sqBit[idx][jdx] = max(sqBit[idx][jdx],a[i][j]);
}
}
while (M--) {
char tip;
int x1,y1,x2,y2,val;
in>>tip>>x1>>y1>>x2>>y2;
switch (tip) {
case 'u': {
in>>val;
update(x1,y1,x2,y2,val);
break;
}
case 'q': {
out<<query(x1,y1,x2,y2)<<'\n';
break;
}
}
}
in.close();out.close();
return 0;
}
#define brk; if (x1 > x2 || y1 > y2) {return;}
void update(int,int,int,int,int);
void hUpdate(int,int,int,int,int);
void vUpdate(int,int,int,int,int);
void sqUpdate(int,int,int,int,int);
int query(int x1,int y1,int x2,int y2) {
brk;
int i = x1;
while (i)
}
int hQuery(int x1,int y1,int x2,int y2) {
brk;
int ans = 0;
for (int i=x1;i <= x2;++i) {
for (int j=y1;j <= y2;j += root) {
int idx = (i-1)/root + 1,
jdx = (j-1)/root + 1;
int add = sqBit[idx][jdx];
ans += hBit[i][jdx] + add;
}
}
return ans;
}
int vQuery(int x1,int y1,int x2,int y2) {
brk;
int ans = 0;
for (int i=x1;i <= x2;i += root) {
for (int j=y1;j <= y2;++j) {
int idx = (i-1)/root + 1,
jdx = (j-1)/root + 1;
int add = sqBit[idx][jdx];
ans += vBit[idx][j] + add;
}
}
return ans;
}
int sqQuery(int x1,int y1,int x2,int y2) {
brk;
int ans = 0;
for (int i=x1;i <= x2;++i) {
for (int j=y1;j <= y2;++j) {
int idx = (i-1)/root + 1,
jdx = (j-1)/root + 1;
int add = hBit[i][jdx] + vBit[idx][j] + sqBit[idx][jdx];
ans += a[i][j] + add;
}
}
return ans;
}