#include<bits/stdc++.h>
using namespace std;
#define Ls (nod<<1)
#define Rs (nod<<1|1)
#define mid ((l+r)>>1)
struct data{
int x1,x2,y,kind;
}w[15005];
bool cmp(data a,data b){
if(a.y!=b.y)return a.y<b.y;
return a.kind>b.kind;
}
struct Tree{
int cnt,line,add;
}tree[400005];
int n,x1[15005],x2[15005],Y[15005],yLG[15005],ans;
void pushup(int nod){
tree[nod].line=min(tree[Ls].line,tree[Rs].line);
if(tree[Ls].linetree[Rs].line)
tree[nod].cnt=tree[Ls].cnt+tree[Rs].cnt,tree[nod].line=tree[Ls].line;
else
tree[nod].cnt=(tree[Ls].line<tree[Rs].line)?tree[Ls].cnt:tree[Rs].cnt;
}
void pushdown(int nod){
tree[Ls].line+=tree[nod].add;
tree[Rs].line+=tree[nod].add;
tree[Ls].add+=tree[nod].add;
tree[Rs].add+=tree[nod].add;
tree[nod].add=0;
}
void build(int nod,int l,int r){
tree[nod].add=0;
if(lr){tree[nod].line=0;tree[nod].cnt=1;return;}
build(Ls,l,mid);
build(Rs,mid+1,r);
pushup(nod);
}
void pluss(int nod,int l,int r,int b,int e,int ad){
if(l>r||l>e||r<b) return;
if(b<=l&&r<=e){tree[nod].add+=ad;tree[nod].line+=ad;return;}
pushdown(nod);
pluss(Ls,l,mid,b,e,ad);
pluss(Rs,mid+1,r,b,e,ad);
pushup(nod);
}
void solve(){
for(int i=1;i<=n;i++){
int before=tree[1].cnt*(tree[1].line0);
pluss(1,-10000,10000,w[i].x1,w[i].x2-1,w[i].kind);
int now=tree[1].cnt*(tree[1].line0);
ans+=abs(now-before);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d%d",&x1[i],&Y[i],&x2[i],&yLG[i]);
w[i2-1].x1=w[i2].x1=x1[i];
w[i2-1].x2=w[i2].x2=x2[i];
}