#include<bits/stdc++.h>
using namespace std;
const int maxn=100+10;
int tot=1,n;
struct data{
int x1,y1,x2,y2;
bool read(){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
return x1<=x2&&y1<=y2;
}
}a[maxn];
bool pd[maxn*2][maxn*2];
vector<int>x,y;
int main(){
int i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++){
if(a[tot].read())tot++;
}
for(i=1;i<=tot;i++){
x.push_back(a[i].x1);
x.push_back(a[i].x2);
y.push_back(a[i].y1);
y.push_back(a[i].y2);
}
sort(x.begin(),x.end());
sort(y.begin(),y.end());
x.erase(unique(x.begin(),x.end()),x.end());
y.erase(unique(y.begin(),y.end()),y.end());
map<int,int> mx,my;
int xn=x.size(),yn=y.size();
for(i=0;i<xn;i++)mx[x[i]]=i;
for(i=0;i<yn;i++)my[y[i]]=i;
for(k=1;k<=tot;k++){
for(i=mx[a[k].x1];i<mx[a[k].x2];i++){
for(j=my[a[k].y1];j<my[a[k].y2];j++){
pd[i][j]=true;
}
}
}
long long ans=0;
for(i=0;i<xn;i++){
for(j=0;j<yn;j++){
if(pd[i][j])
ans+=(long long)((x[i+1]-x[i]))*(y[j+1]-y[j]);
}
}
cout<<ans;
return(0);
}