#include <bits/stdc++.h>
using namespace std;
//#define int long long;
#define fi first
#define se second
#define pii pair <int, int>
#define rect pair<pii, pii>
const int MAXN = 5e2 +5;
int n, m, q, a[MAXN][MAXN], r1,r2, y, y2, w, p, t;
rect st[4*MAXN*MAXN];
rect join(rect a, rect b){
a.fi.fi = min(a.fi.fi, b.fi.fi);
a.fi.se = max(a.fi.se, b.fi.se);
a.se.fi = min(a.se.fi, b.se.fi);
a.se.se = max(a.se.se, b.se.se);
return a;
}
void update(int id, int l , int r, int x, rect pos){
if(l==r){
st[id] = pos;
return;
}
int mid = (l+r)/2;
if(x <= mid) update(id*2, l, mid, x, pos);
else update(id*2+1, mid+1, r, x, pos);
st[id] = join(st[id*2], st[id*2+1]);
}
rect query(int id, int l, int r, int x, int y){
if ( l > y || r < x){
return {{n,1},{m,1}};
}
if ( x <= l && r <= y){
return st[id];
}
int mid=(l+r)/2;
return join(query(id*2, l, mid, x, y), query(id*2+1, mid+1, r, x, y));
}
signed main(){
cin >> n >> m;
for (int i =1; i <= n; i++){
for (int j =1; j <= m ; j++){
cin >> a[i][j];
update(1, 0, n*m-1, a[i][j], {{i,i}, {j,j}});
}
}
cin >> q;
while(q--){
cin >> t;
if(t==1){
cin >> r1 >> y >> r2 >> y2;
swap(a[r1][y], a[r2][y2]);
update(1, 0, n*m-1, a[r1][y], {{r1, r1}, {y, y}});
update(1, 0, n*m-1, a[r2][y2], {{r2, r2}, {y2, y2}});
continue;
}
else if (t ==2){
cin >> w;
p = (p+w)%(n*m);
}
else{
cin >> r1 >> y >> r2 >> y2;
int l = (n*m)-p, r = n*m-1, res =-1;
rect x = query(1, 0, n*m-1, l, r);
if ( r1 <= x.fi.fi && x.fi.se <= r2 && y <= x.se.fi && x.se.se <= y2){
r = l-1;
l=0;
}
while(l <= r){
int mid = (l+r)/2;
x = query(1, 0, n*m-1, l, mid);
if ( r1 <= x.fi.fi && x.fi.se <= r2 && y <= x.se.fi && x.se.se <= y2){
l = mid+1;
}
else{
res = mid;
r = mid-1;
}
}
if (res==-1){
cout << res << endl;
}
else{
cout << (res+p) % (n*m) << endl;
}
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vI2RlZmluZSBpbnQgbG9uZyBsb25nOwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGlpIHBhaXIgPGludCwgaW50PiAKI2RlZmluZSByZWN0IHBhaXI8cGlpLCBwaWk+CmNvbnN0IGludCBNQVhOID0gNWUyICs1OwppbnQgbiwgbSwgcSwgYVtNQVhOXVtNQVhOXSwgcjEscjIsIHksIHkyLCB3LCBwLCB0OwpyZWN0IHN0WzQqTUFYTipNQVhOXTsKCnJlY3Qgam9pbihyZWN0IGEsIHJlY3QgYil7CiAgICBhLmZpLmZpID0gbWluKGEuZmkuZmksIGIuZmkuZmkpOwogICAgIGEuZmkuc2UgPSBtYXgoYS5maS5zZSwgYi5maS5zZSk7CiAgICAgIGEuc2UuZmkgPSBtaW4oYS5zZS5maSwgYi5zZS5maSk7CiAgICAgICBhLnNlLnNlID0gbWF4KGEuc2Uuc2UsIGIuc2Uuc2UpOwogICAgICAgCiAgICAgICByZXR1cm4gYTsKfQoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCAsIGludCByLCBpbnQgeCwgcmVjdCBwb3MpewogICAgaWYobD09cil7CiAgICAgICAgc3RbaWRdID0gcG9zOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIAogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICBpZih4IDw9IG1pZCkgdXBkYXRlKGlkKjIsIGwsIG1pZCwgeCwgcG9zKTsKICAgIGVsc2UgdXBkYXRlKGlkKjIrMSwgbWlkKzEsIHIsIHgsIHBvcyk7CiAgICBzdFtpZF0gPSBqb2luKHN0W2lkKjJdLCBzdFtpZCoyKzFdKTsKfQoKcmVjdCBxdWVyeShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHgsIGludCB5KXsKICAgIGlmICggbCA+IHkgfHwgciA8IHgpewogICAgICAgIHJldHVybiB7e24sMX0se20sMX19OwogICAgfQogICAgaWYgKCB4IDw9IGwgJiYgciA8PSB5KXsKICAgICAgICByZXR1cm4gc3RbaWRdOwogICAgfQogICAgaW50IG1pZD0obCtyKS8yOwogICAgcmV0dXJuIGpvaW4ocXVlcnkoaWQqMiwgbCwgbWlkLCB4LCB5KSwgcXVlcnkoaWQqMisxLCBtaWQrMSwgciwgeCwgeSkpOwp9CgpzaWduZWQgbWFpbigpewogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPTE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBmb3IgKGludCBqID0xOyBqIDw9IG0gOyBqKyspewogICAgICAgICAgICBjaW4gPj4gYVtpXVtqXTsKICAgICAgICAgICAgdXBkYXRlKDEsIDAsIG4qbS0xLCBhW2ldW2pdLCB7e2ksaX0sIHtqLGp9fSk7CiAgICAgICAgfQogICAgfQogICAgY2luID4+IHE7CiAgICB3aGlsZShxLS0pewogICAgICAgIGNpbiA+PiB0OwogICAgICAgIGlmKHQ9PTEpewogICAgICAgICAgICBjaW4gPj4gcjEgPj4geSA+PiByMiA+PiB5MjsKICAgICAgICAgICAgc3dhcChhW3IxXVt5XSwgYVtyMl1beTJdKTsKICAgICAgICAgICAgdXBkYXRlKDEsIDAsIG4qbS0xLCBhW3IxXVt5XSwge3tyMSwgcjF9LCB7eSwgeX19KTsKICAgICAgICAgICAgdXBkYXRlKDEsIDAsIG4qbS0xLCBhW3IyXVt5Ml0sIHt7cjIsIHIyfSwge3kyLCB5Mn19KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodCA9PTIpewogICAgICAgICAgICBjaW4gPj4gdzsKICAgICAgICAgICAgcCA9IChwK3cpJShuKm0pOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBjaW4gPj4gcjEgPj4geSA+PiByMiA+PiB5MjsKICAgICAgICAgICAgaW50IGwgPSAobiptKS1wLCByID0gbiptLTEsIHJlcyA9LTE7CiAgICAgICAgICAgIHJlY3QgeCA9IHF1ZXJ5KDEsIDAsIG4qbS0xLCBsLCByKTsKICAgICAgICAgICAgaWYgKCByMSA8PSB4LmZpLmZpICYmIHguZmkuc2UgPD0gcjIgJiYgeSA8PSB4LnNlLmZpICYmIHguc2Uuc2UgPD0geTIpewogICAgICAgICAgICAgICAgciA9IGwtMTsKICAgICAgICAgICAgICAgIGw9MDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgd2hpbGUobCA8PSByKXsKICAgICAgICAgICAgICAgIGludCBtaWQgPSAobCtyKS8yOwogICAgICAgICAgICAgICAgeCA9IHF1ZXJ5KDEsIDAsIG4qbS0xLCBsLCBtaWQpOwogICAgICAgICAgICAgICAgIGlmICggcjEgPD0geC5maS5maSAmJiB4LmZpLnNlIDw9IHIyICYmIHkgPD0geC5zZS5maSAmJiB4LnNlLnNlIDw9IHkyKXsKICAgICAgICAgICAgIGwgPSBtaWQrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgcmVzID0gbWlkOwogICAgICAgICAgICAgICAgciA9IG1pZC0xOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzPT0tMSl7CiAgICAgICAgICAgICAgICBjb3V0IDw8IHJlcyA8PCBlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBjb3V0IDw8IChyZXMrcCkgJSAobiptKSA8PCBlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgIAogICAgfQo=