#include <bits/stdc++.h>

#define SPED                                                                                                           \
    ios_base::sync_with_stdio(false);                                                                                  \
    cin.tie(0);                                                                                                        \
    cout.tie(0);

#define endl "\n"
#define fi first
#define se second
#define lint long long
#define fami signed
#define lore main
#define freefire freopen

const lint INF = 0x1f1f1f1f1f1f1f1f;
const lint NEG = 0xE1E1E1E1E1E1E1E1;

using namespace std;

struct Seg
{
    vector<int> seg;
    vector<bool> lazy;

    void setup(int N)
    {
        seg.assign(N * 4 + 2, 0);
        lazy.assign(N * 4 + 2, 0);
    }

    void push(int node, int l, int r)
    {
        if ((lazy[node] & 1) == 0)
            return;
        int mid = (l + r) >> 1;

        seg[node << 1] = (mid - l + 1) - seg[node << 1];
        lazy[node << 1] = !lazy[node << 1];

        seg[node << 1 | 1] = (r - mid) - seg[node << 1 | 1];
        lazy[node << 1 | 1] = !lazy[node << 1 | 1];

        lazy[node] = 0;
    }

    void update(int node, int l, int r, int templ, int tempr)
    {
        if (templ <= l and r <= tempr)
        {
            seg[node] = r - l + 1 - seg[node];
            lazy[node] = !lazy[node];
            return;
        }
        else if (r < templ or tempr < l)
            return;
        push(node, l, r);
        int mid = l + r >> 1;
        update(node << 1, l, mid, templ, tempr);
        update(node << 1 | 1, mid + 1, r, templ, tempr);
        seg[node] = seg[node << 1] + seg[node << 1 | 1];
    }

    lint get(int node, int l, int r, int templ, int tempr)
    {
        if (templ <= l and r <= tempr)
            return seg[node];
        else if (r < templ or tempr < l)
            return 0;
        push(node, l, r);
        int mid = l + r >> 1;
        return get(node << 1, l, mid, templ, tempr) + get(node << 1 | 1, mid + 1, r, templ, tempr);
    }
};

int m, n, q;
vector<Seg> hang, cot;

fami lore()
{
    if (fopen("BAI2.inp", "r"))
    {
        freefire("BAI2.inp", "r", stdin);
        freefire("BAI2.out", "w", stdout);
    }
    SPED;
    cin >> m >> n >> q;
    hang.resize(m + 5);
    cot.resize(n + 5);

    for (int i = 0; i <= m + 1; i++)
        hang[i].setup(n);

    for (int i = 0; i <= n + 1; i++)
        cot[i].setup(m);

    lint res = 0;

    for (int i = 1; i <= q; i++)
    {
        int x, y, u, v;
        cin >> x >> u >> y >> v;

        // [x, y] , [u, v]

        res -= hang[x - 1].get(1, 1, n, y, v);
        res -= hang[u].get(1, 1, n, y, v);
        res -= cot[y - 1].get(1, 1, m, x, u);
        res -= cot[v].get(1, 1, m, x, u);

        hang[x - 1].update(1, 1, n, y, v);
        hang[u].update(1, 1, n, y, v);
        cot[y - 1].update(1, 1, m, x, u);
        cot[v].update(1, 1, m, x, u);

        res += hang[x - 1].get(1, 1, n, y, v);
        res += hang[u].get(1, 1, n, y, v);
        res += cot[y - 1].get(1, 1, m, x, u);
        res += cot[v].get(1, 1, m, x, u);

        cout << res << endl;
    }
}
// Let your soul wander where dreams are born.