for(int i=0 ; i<n ; i++){ //測試用
cin >> xI >> yI >> xII >> yII;
coor[ptr].l = xI , coor[ptr].r = xII;
coor[ptr].h = yI , coor[ptr].status = 1;
ptr++;
coor[ptr].l = xI , coor[ptr].r = xII;
coor[ptr].h = yII , coor[ptr].status = -1;
ptr++;
x[ptrI++] = xI;
x[ptrI++] = xII;
}
sort(coor,coor+ptr,cmp);
sort(x,x+ptrI);
ptrI = unique(x,x+ptrI)-x;
build(0,0,ptrI-1);
long long ans = 0;
for(int i=0 ; i<ptr-1 ; i++){
int st = lower_bound(x,x+ptrI,coor[i].l)-x;
int en = lower_bound(x,x+ptrI,coor[i].r)-x;
update(0,st,en,coor[i].status);
ans += ((long long)(coor[i+1].h-coor[i].h))*((long long)tree[0].len);
}