#include<cstdio>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;

int compress(vector<int> &xs,map<int,int> &x){
  sort(xs.begin(),xs.end());
  xs.erase(unique(xs.begin(),xs.end()),xs.end());
  for(int i=0;i<xs.size();i++){
    x[xs[i]] = i;
  }
  return xs.size();
}

int main(){
  int n;
  int x1[2000],x2[2000],y1[2000],y2[2000];
  static int field[4000][4000];
  vector<int> xs,ys;
  map<int,int> x,y;
  scanf("%d",&n);
  for(int i=0;i<n;i++){
    scanf("%d %d %d %d",x1+i,y1+i,x2+i,y2+i);
    xs.push_back(x1[i]); xs.push_back(x2[i]);
    ys.push_back(y1[i]); ys.push_back(y2[i]);
  }
  int w = compress(xs,x);
  int h = compress(ys,y);
  fill(field[0],field[0]+4000000,0);
  for(int i=0;i<n;i++){
    int xx1 = x[x1[i]], xx2 = x[x2[i]], yy1 = y[y1[i]], yy2 = y[y2[i]];
    field[xx1][yy1]++; field[xx2][yy2]++; field[xx1][yy2]--; field[xx2][yy1]--;
  }
  for(int i=1;i<w;i++) for(int j=0;j<h;j++) field[i][j] += field[i-1][j];
  for(int i=1;i<h;i++) for(int j=0;j<w;j++) field[j][i] += field[j][i-1];
  long long ans = 0;
  for(int i=0;i<w;i++){
    for(int j=0;j<h;j++){
      long long dx = xs[i+1]-xs[i], dy = ys[j+1]-ys[j];
      if(field[i][j]>0) ans += dx * dy;
    }
  }
  printf("%lld\n",ans);
  return 0;
}