#include <bits/stdc++.h>
#define rust(a, b, c, d) sqrt(sqr(a - c) + sqr(b - d))
#define sqr(a) (a)*(a)
#define m_p make_pair
#define fi first
#define se second
#define fast_io ios_base::sync_with_stdio(0);cin.tie(0);
#define endl "\n"
#define pll pair <ll,ll>
#define next stopplz
#define y1 STOPPLZ
typedef long long ll;
const ll MAXN = 1e6;
using namespace std;
ll all = 1, a[1001], n;
struct tree{
ll l, r;
long long val;
};
tree p[10 * MAXN];
void modify(ll v, ll ls, ll rs, ll pos, ll val){
if (ls == rs) {
p[v].val = val;
return;
}
ll mid = (ls + rs) / 2;
if (pos <= mid) {
if (p[v].l == 0) p[v].l = ++all;
modify(p[v].l, ls, mid, pos, val);
} else {
if (p[v].r == 0) p[v].r = ++all;
modify(p[v].r, mid + 1, rs, pos, val);
}
p[v].val = p[p[v].l].val + p[p[v].r].val;
}
long long get(ll v, ll ls, ll rs, ll l, ll r){
if (l > r) return 0;
if (ls == l && rs == r) return p[v].val;
ll mid = (ls + rs) / 2;
return get(p[v].l, ls, mid, l, min(r, mid)) + get(p[v].r, mid + 1, rs, max(mid + 1, l), r);
}
long long getSum(ll type, ll x1, ll y1, ll x2, ll y2){
long long ans = 0;
for (int i = x1; i <= x2; ++i) {
// if (type == 1) cout << get(a[i + (type == 2 ? n : 0)], 1, n, y1, y2) << endl;
ans += get(a[i + (type == 2 ? n : 0)], 1, n, y1, y2);
}
return ans;
}
void dfs(ll v1, ll v2, ll ls, ll rs, ll l, ll r, ll pred1, ll pred2, ll dir){
if (l > r) return;
if (ls == l && rs == r){
if (dir == 0) swap(p[pred1].l, p[pred2].l);
else swap(p[pred1].r, p[pred2].r);
return;
}
ll mid = (ls + rs) / 2;
dfs(p[v1].l, p[v2].l, ls, mid, l, min(r, mid), v1, v2, 0);
dfs(p[v1].r, p[v2].r, mid + 1, r, max(mid + 1, l), r, v1, v2, 1);
p[v1].val = p[p[v1].l].val + p[p[v1].r].val;
p[v2].val = p[p[v2].l].val + p[p[v2].r].val;
}
void update(ll x1, ll y1, ll x2, ll y2){
for (int i = x1; i <= x2; ++i) {
if (y1 == 1 && y2 == n){
swap(a[i], a[i + n]);
continue;
}
dfs(a[i], a[i + n], 1, n, y1, y2, 0, 0, 0);
}
return;
}
int main() {
srand(time(0));
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
fast_io;
cin >> n;
for (int i = 1; i <= 2 * n; ++i){
a[i] = all;
for (int j = 1; j <= n; ++j){
ll x;
cin >> x;
modify(a[i], 1, n, j, x);
}
}
ll q;
cin >> q;
while (q--){
ll type, x1, y1, x2, y2;
cin >> type >> x1 >> y1 >> x2 >> y2;
if (type == 0) update(x1, y1, x2, y2);
else cout << getSum(type, x1, y1, x2, y2) << endl;
}
return 0;
}
/*
10
8 5 2 5 6 5 5 5 5 1
0 5 7 3 2 4 6 4 4 3
1 1 5 7 6 5 9 3 7 4
4 6 9 4 5 0 8 0 9 2
2 3 6 8 0 3 1 6 4 6
7 8 9 6 5 5 3 2 4 6
5 2 3 5 7 9 4 7 3 9
9 8 8 3 6 2 7 8 1 7
0 6 7 6 0 0 3 5 8 7
7 8 0 3 6 6 2 7 7 1
7 1 5 9 9 0 6 3 9 5
3 9 3 5 0 5 1 8 0 6
0 7 1 9 6 5 0 0 0 9
4 4 1 4 6 4 0 0 0 4
1 9 2 8 5 2 3 9 6 0
5 2 7 5 4 4 6 3 5 6
0 3 1 4 7 1 5 1 7 7
2 7 7 8 5 9 6 4 9 8
1 6 6 7 5 4 3 3 6 0
5 0 9 6 8 2 2 3 5 3
5
0 1 3 5 4
0 2 3 3 5
2 1 1 9 4
1 1 4 5 5
0 1 2 4 9
168
18
5
13
10
13
59
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIHJ1c3QoYSwgYiwgYywgZCkgc3FydChzcXIoYSAtIGMpICsgc3FyKGIgLSBkKSkKI2RlZmluZSBzcXIoYSkgKGEpKihhKQojZGVmaW5lIG1fcCBtYWtlX3BhaXIKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGZhc3RfaW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApOwojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIHBsbCBwYWlyIDxsbCxsbD4KI2RlZmluZSBuZXh0IHN0b3BwbHoKI2RlZmluZSB5MSBTVE9QUExaCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKY29uc3QgbGwgTUFYTiA9IDFlNjsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbGwgYWxsID0gMSwgYVsxMDAxXSwgbjsKc3RydWN0IHRyZWV7CiAgICBsbCBsLCByOwogICAgbG9uZyBsb25nIHZhbDsKfTsKdHJlZSBwWzEwICogTUFYTl07Cgp2b2lkIG1vZGlmeShsbCB2LCBsbCBscywgbGwgcnMsIGxsIHBvcywgbGwgdmFsKXsKICAgIGlmIChscyA9PSBycykgewogICAgICAgIHBbdl0udmFsID0gdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGxsIG1pZCA9IChscyArIHJzKSAvIDI7CiAgICBpZiAocG9zIDw9IG1pZCkgewogICAgICAgICAgICBpZiAocFt2XS5sID09IDApIHBbdl0ubCA9ICsrYWxsOwogICAgICAgICAgICBtb2RpZnkocFt2XS5sLCBscywgbWlkLCBwb3MsIHZhbCk7CiAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAocFt2XS5yID09IDApIHBbdl0uciA9ICsrYWxsOwogICAgICAgICAgICBtb2RpZnkocFt2XS5yLCBtaWQgKyAxLCBycywgcG9zLCB2YWwpOwogICAgfQoKICAgIHBbdl0udmFsID0gcFtwW3ZdLmxdLnZhbCArIHBbcFt2XS5yXS52YWw7Cn0KCmxvbmcgbG9uZyBnZXQobGwgdiwgbGwgbHMsIGxsIHJzLCBsbCBsLCBsbCByKXsKICAgIGlmIChsID4gcikgcmV0dXJuIDA7CiAgICBpZiAobHMgPT0gbCAmJiBycyA9PSByKSByZXR1cm4gcFt2XS52YWw7CiAgICBsbCBtaWQgPSAobHMgKyBycykgLyAyOwogICAgcmV0dXJuIGdldChwW3ZdLmwsIGxzLCBtaWQsIGwsIG1pbihyLCBtaWQpKSArIGdldChwW3ZdLnIsIG1pZCArIDEsIHJzLCBtYXgobWlkICsgMSwgbCksIHIpOwp9Cgpsb25nIGxvbmcgZ2V0U3VtKGxsIHR5cGUsIGxsIHgxLCBsbCB5MSwgbGwgeDIsIGxsIHkyKXsKICAgIGxvbmcgbG9uZyBhbnMgPSAwOwogICAgZm9yIChpbnQgaSA9IHgxOyBpIDw9IHgyOyArK2kpIHsKLy8gICAgICAgICAgICBpZiAodHlwZSA9PSAxKSBjb3V0IDw8IGdldChhW2kgKyAodHlwZSA9PSAyID8gbiA6IDApXSwgMSwgbiwgeTEsIHkyKSA8PCBlbmRsOwogICAgICAgICAgICBhbnMgKz0gZ2V0KGFbaSArICh0eXBlID09IDIgPyBuIDogMCldLCAxLCBuLCB5MSwgeTIpOwogICAgfQogICAgcmV0dXJuIGFuczsKfQoKdm9pZCBkZnMobGwgdjEsIGxsIHYyLCBsbCBscywgbGwgcnMsIGxsIGwsIGxsIHIsIGxsIHByZWQxLCBsbCBwcmVkMiwgbGwgZGlyKXsKICAgIGlmIChsID4gcikgcmV0dXJuOwogICAgaWYgKGxzID09IGwgJiYgcnMgPT0gcil7CiAgICAgICAgaWYgKGRpciA9PSAwKSBzd2FwKHBbcHJlZDFdLmwsIHBbcHJlZDJdLmwpOwogICAgICAgIGVsc2Ugc3dhcChwW3ByZWQxXS5yLCBwW3ByZWQyXS5yKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBsbCBtaWQgPSAobHMgKyBycykgLyAyOwogICAgZGZzKHBbdjFdLmwsIHBbdjJdLmwsIGxzLCBtaWQsIGwsIG1pbihyLCBtaWQpLCB2MSwgdjIsIDApOwogICAgZGZzKHBbdjFdLnIsIHBbdjJdLnIsIG1pZCArIDEsIHIsIG1heChtaWQgKyAxLCBsKSwgciwgdjEsIHYyLCAxKTsKICAgIHBbdjFdLnZhbCA9IHBbcFt2MV0ubF0udmFsICsgcFtwW3YxXS5yXS52YWw7CiAgICBwW3YyXS52YWwgPSBwW3BbdjJdLmxdLnZhbCArIHBbcFt2Ml0ucl0udmFsOwogfQoKdm9pZCB1cGRhdGUobGwgeDEsIGxsIHkxLCBsbCB4MiwgbGwgeTIpewogICAgZm9yIChpbnQgaSA9IHgxOyBpIDw9IHgyOyArK2kpIHsKICAgICAgICAgICAgaWYgKHkxID09IDEgJiYgeTIgPT0gbil7CiAgICAgICAgICAgICAgICBzd2FwKGFbaV0sIGFbaSArIG5dKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRmcyhhW2ldLCBhW2kgKyBuXSwgMSwgbiwgeTEsIHkyLCAwLCAwLCAwKTsKICAgIH0KICAgIHJldHVybjsKfQppbnQgbWFpbigpIHsKICAgIHNyYW5kKHRpbWUoMCkpOwovLyAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7Ci8vICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwogICAgZmFzdF9pbzsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMiAqIG47ICsraSl7CiAgICAgICAgYVtpXSA9IGFsbDsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBuOyArK2opewogICAgICAgICAgICBsbCB4OwogICAgICAgICAgICBjaW4gPj4geDsKICAgICAgICAgICAgbW9kaWZ5KGFbaV0sIDEsIG4sIGosIHgpOwogICAgICAgIH0KICAgIH0KICAgIGxsIHE7CiAgICBjaW4gPj4gcTsKICAgIHdoaWxlIChxLS0pewogICAgICAgIGxsIHR5cGUsIHgxLCB5MSwgeDIsIHkyOwogICAgICAgIGNpbiA+PiB0eXBlID4+IHgxID4+IHkxID4+IHgyID4+IHkyOwogICAgICAgIGlmICh0eXBlID09IDApIHVwZGF0ZSh4MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgZWxzZSBjb3V0IDw8IGdldFN1bSh0eXBlLCB4MSwgeTEsIHgyLCB5MikgPDwgZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9Ci8qCjEwCjggNSAyIDUgNiA1IDUgNSA1IDEKMCA1IDcgMyAyIDQgNiA0IDQgMwoxIDEgNSA3IDYgNSA5IDMgNyA0CjQgNiA5IDQgNSAwIDggMCA5IDIKMiAzIDYgOCAwIDMgMSA2IDQgNgo3IDggOSA2IDUgNSAzIDIgNCA2CjUgMiAzIDUgNyA5IDQgNyAzIDkKOSA4IDggMyA2IDIgNyA4IDEgNwowIDYgNyA2IDAgMCAzIDUgOCA3CjcgOCAwIDMgNiA2IDIgNyA3IDEKCjcgMSA1IDkgOSAwIDYgMyA5IDUKMyA5IDMgNSAwIDUgMSA4IDAgNgowIDcgMSA5IDYgNSAwIDAgMCA5CjQgNCAxIDQgNiA0IDAgMCAwIDQKMSA5IDIgOCA1IDIgMyA5IDYgMAo1IDIgNyA1IDQgNCA2IDMgNSA2CjAgMyAxIDQgNyAxIDUgMSA3IDcKMiA3IDcgOCA1IDkgNiA0IDkgOAoxIDYgNiA3IDUgNCAzIDMgNiAwCjUgMCA5IDYgOCAyIDIgMyA1IDMKNQowIDEgMyA1IDQKMCAyIDMgMyA1CjIgMSAxIDkgNAoxIDEgNCA1IDUKMCAxIDIgNCA5CgoKCjE2OAoxOAo1CjEzCjEwCjEzCjU5CgoqLwo=