#include <bits/stdc++.h>
using namespace std;
using i64 = int64_t;
using vi = vector<i64>;
using vvi = vector<vi>;

struct rect {
    i64 x1, y1, x2, y2;
};

int main() {
    // assert(freopen("/Users/xuzijian/aoj/input", "r", stdin));
    int n;
    cin >> n;
    vector<rect> rs;
    map<i64, int> xs, ys;
    for (int i = 0; i < n; i++) {
        i64 a, b, c, d;
        cin >> a >> b >> c >> d;
        xs[a];
        ys[b];
        xs[c];
        ys[d];
        rs.push_back({a, b, c, d});
    }
    int z = 0;
    map<int, i64> Xs, Ys;
    for (auto& p: xs) {
        p.second = z;
        Xs[z++] = p.first;
    }
    z = 0;
    for (auto& p: ys) {
        p.second = z;
        Ys[z++] = p.first;
    }
    
    vector<rect> cs;
    for (rect r: rs) {
        cs.push_back({xs[r.x1], ys[r.y1], xs[r.x2], ys[r.y2]});
    }

    vvi imos(4040, vi(4040));
    for (rect c: cs) {
        imos[c.x1][c.y1] += 1;
        imos[c.x1][c.y2] -= 1;
        imos[c.x2][c.y1] -= 1;
        imos[c.x2][c.y2] += 1;
    }

    for (int i = 0; i < 4040; i++) {
        for (int j = 0; j < 4040 - 1; j++) {
            imos[i][j + 1] += imos[i][j];
        }
    }
    for (int i = 0; i < 4040 - 1; i++) {
        for (int j = 0; j < 4040; j++) {
            imos[i + 1][j] += imos[i][j];
        }
    }

    i64 ans = 0;
    for (int i = 1; i < xs.size(); i++) {
        for (int j = 1; j < ys.size(); j++) {
            if (imos[i - 1][j - 1]) {
                ans += (Xs[i] - Xs[i - 1]) * (Ys[j] - Ys[j - 1]);
            }
        }
    }
    cout << ans << endl;
}
