#include <bits/stdc++.h>
#define all(v) (v).begin(), (v).end()
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; ++i)
#define repd(i, r, l) for (int i = r; i >= l; --i)
#define _unique(x) (x).resize(unique((x).begin(), (x).end()) - (x).begin());
#define sz(v) (int)(v).size()
#define fi first
#define se second
#define pb push_back
#define pf push_front
#define mp make_pair
#define eps double(1e-9)
#define vii vector<int>
#define pii pair<int,int>
#define p2i pair<int,pii>
#define endl '\n'
using namespace std;
const int N = 1e6 + 5;
const int MN = 2e3 + 5;
// const int mod = 1e9 + 7;
const int inf = 1e18 + 7;
const bool Emily = false;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rnd(int l, int r) {
return l+rng()%(r-l+1);
}
bool minimize(int &a, int b) {
if (a > b) {
a = b;
return 1;
}
return 0;
}
bool maximize(int &a, int b) {
if (a < b) {
a = b;
return 1;
}
return 0;
}
struct emily {
int x, y, u, v;
emily(int _x, int _y, int _u, int _v) {
x = _x, y = _y, u = _u, v = _v;
}
bool operator < (const emily &other) const{
return (x == other.x && y == other.y && u >= other.u && v >= other.v);
}
};
int n, m, k;
vector <vii> a;
vector <vii> f;
vector <vector <pii> > qu;
vector <emily> queries;
void mod(int &x) {
x %= 3;
if (x < 0) x += 3;
}
int cal(int x) {
f = vector <vii > (n + 2, vii (m + 2, 0));
int res = 0;
for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) {
f[i][j] = f[i][j] + f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1];
mod(f[i][j]);
int cur = a[i][j] + f[i][j];
mod(cur);
if (cur == x) continue ;
//auto p = *(lower_bound(ALL(queries), emily(i, j, 0, 0)));
//int u = p.u; int v = p.v;
int u = qu[i][j].fi, v = qu[i][j].se;
if (u == 0) return inf;
int cnt = (x - cur + 3) % 3;
res += cnt;
// (i, j) (u, v)
f[i][j] += cnt; f[i][v + 1] -= cnt;
f[u + 1][j] -= cnt; f[u + 1][v + 1] += cnt;
}
return res;
}
void solve(void) {
cin >> n >> m >> k;
a = vector <vii > (n + 2, vii (m + 2, 0));
qu = vector <vector <pii > > (n + 2, vector <pii> (m + 2, {0, 0}));
for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) cin >> a[i][j];
for (int i = 1; i <= k; ++i) {
int x, y, u, v;
cin >> x >> y >> u >> v;
//queries.pb(emily(x, y, u, v));
qu[x][y] = mp(u, v);
}
int res = min(cal(1), cal(2));
if (res == inf) cout << -1 << endl ;
else cout << res << endl;
}
signed main()
{
#define task "LIGHT"
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// freopen(task".inp", "r", stdin);
// freopen(task".out", "w", stdout);
if (Emily) {
int t; cin >> t;
while (t-- ) solve();
} else solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgYWxsKHYpICh2KS5iZWdpbigpLCAodikuZW5kKCkKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcmVwKGksIGwsIHIpIGZvciAoaW50IGkgPSBsOyBpIDw9IHI7ICsraSkKI2RlZmluZSByZXBkKGksIHIsIGwpIGZvciAoaW50IGkgPSByOyBpID49IGw7IC0taSkKI2RlZmluZSBfdW5pcXVlKHgpICh4KS5yZXNpemUodW5pcXVlKCh4KS5iZWdpbigpLCAoeCkuZW5kKCkpIC0gKHgpLmJlZ2luKCkpOwojZGVmaW5lIHN6KHYpIChpbnQpKHYpLnNpemUoKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGVwcyBkb3VibGUoMWUtOSkKI2RlZmluZSB2aWkgdmVjdG9yPGludD4KI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHAyaSBwYWlyPGludCxwaWk+CiNkZWZpbmUgZW5kbCAnXG4nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAxZTYgKyA1Owpjb25zdCBpbnQgTU4gPSAyZTMgKyA1OwovLyBjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IGluZiA9IDFlMTggKyA3Owpjb25zdCBib29sIEVtaWx5ID0gZmFsc2U7CgptdDE5OTM3IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwppbnQgcm5kKGludCBsLCBpbnQgcikgewogICAgcmV0dXJuIGwrcm5nKCklKHItbCsxKTsKfQoKYm9vbCBtaW5pbWl6ZShpbnQgJmEsIGludCBiKSB7CiAgICBpZiAoYSA+IGIpIHsKICAgICAgICBhID0gYjsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiAwOwp9Cgpib29sIG1heGltaXplKGludCAmYSwgaW50IGIpIHsKICAgIGlmIChhIDwgYikgewogICAgICAgIGEgPSBiOwogICAgICAgIHJldHVybiAxOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCnN0cnVjdCBlbWlseSB7CiAgICBpbnQgeCwgeSwgdSwgdjsKCiAgICBlbWlseShpbnQgX3gsIGludCBfeSwgaW50IF91LCBpbnQgX3YpIHsKICAgICAgICB4ID0gX3gsIHkgPSBfeSwgdSA9IF91LCB2ID0gX3Y7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBlbWlseSAmb3RoZXIpIGNvbnN0ewogICAgICAgIHJldHVybiAoeCA9PSBvdGhlci54ICYmIHkgPT0gb3RoZXIueSAmJiB1ID49IG90aGVyLnUgJiYgdiA+PSBvdGhlci52KTsKICAgIH0KfTsKCmludCBuLCBtLCBrOwp2ZWN0b3IgPHZpaT4gYTsKdmVjdG9yIDx2aWk+IGY7CnZlY3RvciA8dmVjdG9yIDxwaWk+ID4gcXU7CnZlY3RvciA8ZW1pbHk+IHF1ZXJpZXM7Cgp2b2lkIG1vZChpbnQgJngpIHsKICAgIHggJT0gMzsKICAgIGlmICh4IDwgMCkgeCArPSAzOwp9CgppbnQgY2FsKGludCB4KSB7CiAgICBmID0gdmVjdG9yIDx2aWkgPiAobiArIDIsIHZpaSAobSArIDIsIDApKTsKICAgIGludCByZXMgPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgZm9yIChpbnQgaiA9IDE7IGogPD0gbTsgKytqKSB7CiAgICAgICAgZltpXVtqXSA9IGZbaV1bal0gKyBmW2kgLSAxXVtqXSArIGZbaV1baiAtIDFdIC0gZltpIC0gMV1baiAtIDFdOwogICAgICAgIG1vZChmW2ldW2pdKTsKCiAgICAgICAgaW50IGN1ciA9IGFbaV1bal0gKyBmW2ldW2pdOwogICAgICAgIG1vZChjdXIpOwoKICAgICAgICBpZiAoY3VyID09IHgpIGNvbnRpbnVlIDsKCiAgICAgICAgLy9hdXRvIHAgPSAqKGxvd2VyX2JvdW5kKEFMTChxdWVyaWVzKSwgZW1pbHkoaSwgaiwgMCwgMCkpKTsKICAgICAgICAvL2ludCB1ID0gcC51OyBpbnQgdiA9IHAudjsKCiAgICAgICAgaW50IHUgPSBxdVtpXVtqXS5maSwgdiA9IHF1W2ldW2pdLnNlOwoKICAgICAgICBpZiAodSA9PSAwKSByZXR1cm4gaW5mOwogICAgICAgIGludCBjbnQgPSAoeCAtIGN1ciArIDMpICUgMzsKCiAgICAgICAgcmVzICs9IGNudDsKICAgICAgICAvLyAoaSwgaikgKHUsIHYpCgogICAgICAgIGZbaV1bal0gKz0gY250OyBmW2ldW3YgKyAxXSAtPSBjbnQ7CiAgICAgICAgZlt1ICsgMV1bal0gLT0gY250OyBmW3UgKyAxXVt2ICsgMV0gKz0gY250OwogICAgfQoKICAgIHJldHVybiByZXM7Cn0KCnZvaWQgc29sdmUodm9pZCkgewogICAgY2luID4+IG4gPj4gbSA+PiBrOwoKICAgIGEgPSB2ZWN0b3IgPHZpaSA+IChuICsgMiwgdmlpIChtICsgMiwgMCkpOwogICAgcXUgPSB2ZWN0b3IgPHZlY3RvciA8cGlpID4gPiAobiArIDIsIHZlY3RvciA8cGlpPiAobSArIDIsIHswLCAwfSkpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgZm9yIChpbnQgaiA9IDE7IGogPD0gbTsgKytqKSBjaW4gPj4gYVtpXVtqXTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBrOyArK2kpIHsKICAgICAgICBpbnQgeCwgeSwgdSwgdjsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IHUgPj4gdjsKICAgICAgICAvL3F1ZXJpZXMucGIoZW1pbHkoeCwgeSwgdSwgdikpOwogICAgICAgIHF1W3hdW3ldID0gbXAodSwgdik7CiAgICB9CgogICAgaW50IHJlcyA9IG1pbihjYWwoMSksIGNhbCgyKSk7CgogICAgaWYgKHJlcyA9PSBpbmYpIGNvdXQgPDwgLTEgPDwgZW5kbCA7CiAgICBlbHNlIGNvdXQgPDwgcmVzIDw8IGVuZGw7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgI2RlZmluZSB0YXNrICJMSUdIVCIKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIC8vIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKCiAgICBpZiAoRW1pbHkpIHsKICAgICAgICBpbnQgdDsgY2luID4+IHQ7CiAgICAgICAgd2hpbGUgKHQtLSApIHNvbHZlKCk7CiAgICB9IGVsc2Ugc29sdmUoKTsKCiAgICByZXR1cm4gMDsKfQo=