#include <bits/stdc++.h>
using namespace std;
typedef pair <int, int> ii;
typedef long long ll;
const int INF = 1e9;
const ll LINF = 1e18;
// Kỹ thuật nhân đôi trên mảng 2D
const int N = 5e2 + 5;
int n, m, q;
int a[2 * N][2 * N];
int sum[2 * N][2 * N];
int getSum(int x1, int y1, int x2, int y2) {
return sum[x2][y2] - sum[x1 - 1][y2] - sum[x2][y1 - 1] + sum[x1 - 1][y1 - 1];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int x = 1; x <= n; x++) {
for (int y = 1; y <= m; y++) {
cin >> a[x][y];
a[x + n][y] = a[x][y];
a[x][y + m] = a[x][y];
a[x + n][y + m] = a[x][y];
}
}
for (int x = 1; x <= 2 * n; x++) {
for (int y = 1; y <= 2 * m; y++) {
sum[x][y] = sum[x - 1][y] + sum[x][y - 1] - sum[x - 1][y - 1] + a[x][y];
}
}
cin >> q;
int dx = 0, dy = 0;
while (q--) {
int type; cin >> type;
if (type == 0) {
int cnt_l, cnt_u;
cin >> cnt_l >> cnt_u;
dx = (dx + cnt_u) % n;
dy = (dy + cnt_l) % m;
}
else {
int u, v, s, t;
cin >> u >> v >> s >> t;
int x1 = (u + dx - 1) % n + 1, y1 = (v + dy - 1) % m + 1;
int x2 = x1 + (s - u), y2 = y1 + (t - v);
cout << getSum(x1, y1, x2, y2) << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBwYWlyIDxpbnQsIGludD4gaWk7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgaW50IElORiA9IDFlOTsgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgovLyBL4bu5IHRodeG6rXQgbmjDom4gxJHDtGkgdHLDqm4gbeG6o25nIDJECmNvbnN0IGludCBOID0gNWUyICsgNTsgCgppbnQgbiwgbSwgcTsgCmludCBhWzIgKiBOXVsyICogTl07IAppbnQgc3VtWzIgKiBOXVsyICogTl07IAoKaW50IGdldFN1bShpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIpIHsKCXJldHVybiBzdW1beDJdW3kyXSAtIHN1bVt4MSAtIDFdW3kyXSAtIHN1bVt4Ml1beTEgLSAxXSArIHN1bVt4MSAtIDFdW3kxIC0gMV07Cn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKCWNpbi50aWUobnVsbHB0cik7CgljaW4gPj4gbiA+PiBtOyAKCQoJZm9yIChpbnQgeCA9IDE7IHggPD0gbjsgeCsrKSB7CgkJZm9yIChpbnQgeSA9IDE7IHkgPD0gbTsgeSsrKSB7CgkJCWNpbiA+PiBhW3hdW3ldOwoJCQlhW3ggKyBuXVt5XSA9IGFbeF1beV07CgkJCWFbeF1beSArIG1dID0gYVt4XVt5XTsgCgkJCWFbeCArIG5dW3kgKyBtXSA9IGFbeF1beV07CgkJfQoJfQoKCWZvciAoaW50IHggPSAxOyB4IDw9IDIgKiBuOyB4KyspIHsKCQlmb3IgKGludCB5ID0gMTsgeSA8PSAyICogbTsgeSsrKSB7CgkJCXN1bVt4XVt5XSA9IHN1bVt4IC0gMV1beV0gKyBzdW1beF1beSAtIDFdIC0gc3VtW3ggLSAxXVt5IC0gMV0gKyBhW3hdW3ldOyAKCQl9Cgl9CgkKCWNpbiA+PiBxOyAgCglpbnQgZHggPSAwLCBkeSA9IDA7IAoJCgl3aGlsZSAocS0tKSB7CgkJaW50IHR5cGU7IGNpbiA+PiB0eXBlOyAKCQkKCQlpZiAodHlwZSA9PSAwKSB7CgkJCWludCBjbnRfbCwgY250X3U7IAoJCQljaW4gPj4gY250X2wgPj4gY250X3U7IAoJCQlkeCA9IChkeCArIGNudF91KSAlIG47ICAgCgkJCWR5ID0gKGR5ICsgY250X2wpICUgbTsgCgkJfQoJCWVsc2UgewoJCQlpbnQgdSwgdiwgcywgdDsgIAoJCQljaW4gPj4gdSA+PiB2ID4+IHMgPj4gdDsgCgkJCgkJCWludCB4MSA9ICh1ICsgZHggLSAxKSAlIG4gKyAxLCB5MSA9ICh2ICsgZHkgLSAxKSAlIG0gKyAxOyAKCQkJaW50IHgyID0geDEgKyAocyAtIHUpLCB5MiA9IHkxICsgKHQgLSB2KTsKCgkJCWNvdXQgPDwgZ2V0U3VtKHgxLCB5MSwgeDIsIHkyKSA8PCAnXG4nOyAKCQl9Cgl9Cn0=