#include <bits/stdc++.h>
using namespace std;
int n,m,q;
struct Query
{
int x1,y1,x2,y2;
};
vector<vector<int>> inp;
vector<Query> query;
vector<int> seg;
vector<int> lazy;
vector<vector<int>> bit;
void sub1()
{
int ans = 0;
for(int i =1; i<=q; i++)
{
for(int a = query[i].x1; a<=query[i].x2; a++)
{
for(int b = query[i].y1; b<=query[i].y2; b++)
{
if(inp[a][b])
{
ans--;
inp[a][b] = 0;
}
else
{
ans++;
inp[a][b] = 1;
}
}
}
}
cout << ans;
return;
}
void push(int id,int l, int r)
{
if(lazy[id] == 0 || l == r)return;
int mid = (l+r)/2;
lazy[id*2] +=lazy[id];
lazy[id*2+1] += lazy[id];
seg[id*2] += (mid - l + 1) * lazy[id];
seg[id*2+1] += (r - mid) * lazy[id];
lazy[id] = 0;
return;
}
void update(int id, int l, int r, int u, int v)
{
if(u > r|| v< l ) return;
if(u <= l && v >= r)
{
seg[id] += (r-l+1);
lazy[id]++;
return;
}
push(id, l, r);
int mid = (l+r)/2;
update(id*2, l, mid, u, v);
update(id*2+1, mid+1, r, u, v);
seg[id] = seg[id*2] + seg[id*2+1];
}
int get(int id, int l, int r, int pos)
{
if(l == r) return seg[id];
int mid = (l+r)/2;
push(id, l, r);
if(mid >= pos) return get(id*2, l, mid, pos);
else return get(id*2+1, mid+1, r, pos);
}
void sub2()
{
seg.resize(4*m+1);
lazy.resize(4*m+1);
for(int i =1; i<=q; i++)
{
int l = query[i].y1, r = query[i].y2;
update(1, 1, m, l, r);
}
int ans = 0;
for(int i =1; i<=m; i++) {
int tmp = get(1, 1, m, i);
if(tmp % 2 != 0) ans++;
}
cout << ans;
}
void addBIT(int x, int y,int val)
{
for(int i = x; i<=n; i += i & -i)
for(int j = y; j<=m; j+= j & -j) bit[i][j]+=val;
}
void updateBIT(int x1, int y1, int x2, int y2)
{
addBIT(x1, y1, 1);
addBIT(x2+1, y1, -1);
addBIT(x1, y2+1, -1);
addBIT(x2+1, y2+1, 1);
return;
}
int getBIT(int x, int y)
{
int res = 0;
for(int i = x; i>=1; i-= i &-i) for(int j = y; j >=1; j -= j& -j)res += bit[i][j];
return res;
}
void sub3()
{
bit.resize(n+3, vector<int>(m+3));
for(int i =1; i<=q; i++)
{
updateBIT(query[i].x1, query[i].y1, query[i].x2, query[i].y2);
}
int ans = 0;
for(int i =1; i<=n; i++)
{
for(int j =1; j<=m; j++)
{
int tmp =getBIT(i, j);
if(tmp % 2 != 0) ans++;
}
}
cout << ans;
return;
}
int main()
{
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n >> m >> q;
inp.resize(n+1, vector<int>(m+1));
query.resize(q+1);
for(int i =1; i<=q; i++)
{
int a,b,c,d; cin >> a >> b >> c >> d;
query[i] = {a, b, c, d};
}
//sub1();
//sub2();
sub3();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLG0scTsKc3RydWN0IFF1ZXJ5CnsKCWludCB4MSx5MSx4Mix5MjsKfTsKdmVjdG9yPHZlY3RvcjxpbnQ+PiBpbnA7CnZlY3RvcjxRdWVyeT4gcXVlcnk7CnZlY3RvcjxpbnQ+IHNlZzsKdmVjdG9yPGludD4gbGF6eTsKdmVjdG9yPHZlY3RvcjxpbnQ+PiBiaXQ7CnZvaWQgc3ViMSgpCnsKCWludCBhbnMgPSAwOwoJZm9yKGludCBpID0xOyBpPD1xOyBpKyspCgl7CgkJZm9yKGludCBhID0gcXVlcnlbaV0ueDE7IGE8PXF1ZXJ5W2ldLngyOyBhKyspCgkJewoJCQlmb3IoaW50IGIgPSBxdWVyeVtpXS55MTsgYjw9cXVlcnlbaV0ueTI7IGIrKykgCgkJCXsKCQkJCWlmKGlucFthXVtiXSkKCQkJCXsKCQkJCQlhbnMtLTsKCQkJCQlpbnBbYV1bYl0gPSAwOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWFucysrOwoJCQkJCWlucFthXVtiXSA9IDE7CgkJCQl9CgkJCX0KCQl9Cgl9Cgljb3V0IDw8IGFuczsKCXJldHVybjsKfQp2b2lkIHB1c2goaW50IGlkLGludCBsLCBpbnQgcikKewoJaWYobGF6eVtpZF0gPT0gMCB8fCBsID09IHIpcmV0dXJuOwoJaW50IG1pZCA9IChsK3IpLzI7CglsYXp5W2lkKjJdICs9bGF6eVtpZF07CglsYXp5W2lkKjIrMV0gKz0gbGF6eVtpZF07CglzZWdbaWQqMl0gKz0gKG1pZCAtIGwgKyAxKSAqIGxhenlbaWRdOwoJc2VnW2lkKjIrMV0gKz0gKHIgLSBtaWQpICogbGF6eVtpZF07CglsYXp5W2lkXSA9IDA7CglyZXR1cm47Cn0Kdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikKewoJaWYodSA+IHJ8fCB2PCBsICkgcmV0dXJuOwoJaWYodSA8PSBsICYmIHYgPj0gcikgCgl7CgkJc2VnW2lkXSArPSAoci1sKzEpOwoJCWxhenlbaWRdKys7CgkJcmV0dXJuOwoJfQoJcHVzaChpZCwgbCwgcik7CglpbnQgbWlkID0gKGwrcikvMjsKCXVwZGF0ZShpZCoyLCBsLCBtaWQsIHUsIHYpOwoJdXBkYXRlKGlkKjIrMSwgbWlkKzEsIHIsIHUsIHYpOwoJc2VnW2lkXSAgPSBzZWdbaWQqMl0gKyBzZWdbaWQqMisxXTsKfQoKaW50IGdldChpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHBvcykKewoJaWYobCA9PSByKSByZXR1cm4gc2VnW2lkXTsKCWludCBtaWQgPSAobCtyKS8yOwoJcHVzaChpZCwgbCwgcik7CglpZihtaWQgPj0gcG9zKSByZXR1cm4gZ2V0KGlkKjIsIGwsIG1pZCwgcG9zKTsKCWVsc2UgcmV0dXJuIGdldChpZCoyKzEsIG1pZCsxLCByLCBwb3MpOwp9CnZvaWQgc3ViMigpCnsKCXNlZy5yZXNpemUoNCptKzEpOwoJbGF6eS5yZXNpemUoNCptKzEpOwoJZm9yKGludCAgaSA9MTsgaTw9cTsgaSsrKQoJewoJCWludCAgbCA9IHF1ZXJ5W2ldLnkxLCByID0gcXVlcnlbaV0ueTI7CgkJdXBkYXRlKDEsIDEsIG0sIGwsIHIpOwoJfQoJaW50IGFucyA9IDA7Cglmb3IoaW50IGkgPTE7IGk8PW07IGkrKykgewoJCWludCB0bXAgPSBnZXQoMSwgMSwgbSwgaSk7CgkJaWYodG1wICUgMiAhPSAwKSBhbnMrKzsKCX0KCWNvdXQgPDwgYW5zOwp9Cgp2b2lkIGFkZEJJVChpbnQgeCwgaW50IHksaW50IHZhbCkKewoJZm9yKGludCAgaSA9IHg7IGk8PW47IGkgKz0gaSAmIC1pKQoJCWZvcihpbnQgIGogPSB5OyBqPD1tOyBqKz0gaiAgJiAtaikgYml0W2ldW2pdKz12YWw7Cn0KCnZvaWQgdXBkYXRlQklUKGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MikKewoJYWRkQklUKHgxLCB5MSwgMSk7CglhZGRCSVQoeDIrMSwgeTEsIC0xKTsKCWFkZEJJVCh4MSwgeTIrMSwgLTEpOwoJYWRkQklUKHgyKzEsIHkyKzEsIDEpOwoJcmV0dXJuOwp9CgppbnQgZ2V0QklUKGludCB4LCBpbnQgeSkKewoJaW50IHJlcyA9IDA7Cglmb3IoaW50ICBpID0geDsgaT49MTsgaS09IGkgJi1pKSBmb3IoaW50IGogPSB5OyBqID49MTsgaiAtPSBqJiAtailyZXMgKz0gYml0W2ldW2pdOwoJcmV0dXJuIHJlczsKfQoKCnZvaWQgc3ViMygpCnsKCWJpdC5yZXNpemUobiszLCB2ZWN0b3I8aW50PihtKzMpKTsKCWZvcihpbnQgIGkgPTE7IGk8PXE7IGkrKykKCXsKCQl1cGRhdGVCSVQocXVlcnlbaV0ueDEsIHF1ZXJ5W2ldLnkxLCBxdWVyeVtpXS54MiwgcXVlcnlbaV0ueTIpOwoJfQoJaW50IGFucyA9IDA7Cglmb3IoaW50IGkgPTE7IGk8PW47IGkrKykKCXsKCQlmb3IoaW50IGogPTE7IGo8PW07IGorKykKCQl7CgkJCWludCB0bXAgPWdldEJJVChpLCBqKTsKCQkJaWYodG1wICUgMiAhPSAwKSBhbnMrKzsKCQl9Cgl9Cgljb3V0IDw8IGFuczsKCXJldHVybjsKfQoKCmludCBtYWluKCkKewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKCWNpbiA+PiBuID4+IG0gPj4gcTsKCWlucC5yZXNpemUobisxLCB2ZWN0b3I8aW50PihtKzEpKTsKCXF1ZXJ5LnJlc2l6ZShxKzEpOwoJZm9yKGludCBpID0xOyBpPD1xOyBpKyspIAoJewoJCWludCBhLGIsYyxkOyBjaW4gPj4gYSA+PiBiID4+IGMgPj4gZDsKCQlxdWVyeVtpXSA9IHthLCBiLCBjLCBkfTsKCX0KCS8vc3ViMSgpOwoJLy9zdWIyKCk7CglzdWIzKCk7CgkKCXJldHVybiAwOwp9