#include<iostream>
#include <algorithm>
#define ls now<<1
#define rs now<<1|1
#define ll long long
using namespace std;
const int MM=1000005;
ll n,x1,x2,y1,y2,x[MM],t[MM<<2],len[MM<<2],ans,tot;
struct scanline
{
int l,r,h,q;
}line[MM];
bool cmp(scanline a,scanline b)
{
return a.h<b.h;
}
void pushup(int now,int l,int r)
{
if(t[now])
len[now]=x[r+1]-x[l];
else
len[now]=len[ls]+len[rs];
}
void add(int now,int l,int r,int L,int R,int k)
{
if(x[r+1]<=L||x[l]>=R)
return;
if(x[l]>=L&&x[r+1]<=R)
{
t[now]+=k;
pushup(now,l,r);
return;
}
int mid=(l+r)>>1;
add(ls,l,mid,L,R,k);
add(rs,mid+1,r,L,R,k);
pushup(now,l,r);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x1>>y1>>x2>>y2;
x[2*i-1]=x1,x[2*i]=x2;
line[2*i-1]=(scanline){x1,x2,y1,1};
line[2*i]=(scanline){x1,x2,y2,-1};
}
n=n<<1;
sort(line+1,line+n+1,cmp);
sort(x+1,x+n+1);
ll tot=unique(x+1,x+n+1)-x-1;
ll ans=0;
for(int i=1;i<n;i++)
{
add(1,1,tot-1,line[i].l,line[i].r,line[i].q);
ans+=len[1]*(line[i+1].h-line[i].h);
}
cout<<ans;
return 0;
}