#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;
}