#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define ll long long
#define pb push_back
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define all(t) t.begin(),t.end()
using namespace std;
const ll inf=1e10;
const int maxn=200003;
int n;
struct ox
{
int x,y,sts;
ox(){}
ox(int x, int y, int sts):
x(x),y(y),sts(sts) {}
};
struct oy
{
int x,y,Y;
oy(){}
oy(int x, int y, int Y):
x(x),y(y),Y(Y) {}
};
vector<ox>A;
vector<oy>B;
vector<int>N;
void ADD(int x, int y, int u, int v)
{
if(x==u)
B.pb(oy(x,min(y,v),max(y,v)));
else
{
if(x>u) swap(x,u);
A.pb(ox(x,y,1));
A.pb(ox(u+1,y,-1));
}
}
int POS(int X)
{
return lower_bound(N.begin(),N.end(),X)+1-N.begin();
}
ll node[maxn*15];
void update(int l, int r, int lab, int a, ll x)
{
if(l==r)
{
node[lab]+=x;
return;
}
int mid=(l+r)/2;
if(a<=mid) update(l,mid,lab*2,a,x);
else update(mid+1,r,lab*2+1,a,x);
node[lab]=node[lab*2]+node[lab*2+1];
}
ll get(int l, int r, int lab, int a, int b)
{
if(l>b || r<a) return 0;
if(l>=a && r<=b) return node[lab];
int mid=(l+r)/2;
return get(l,mid,lab*2,a,b)+get(mid+1,r,lab*2+1,a,b);
}
bool cmp1(ox a, ox b)
{
return a.x<b.x;
}
bool cmp2(oy a, oy b)
{
return a.x<b.x;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y,u,v;
cin>>x>>y>>u>>v;
N.pb(x);N.pb(y);N.pb(u);N.pb(v);
ADD(x,y,u,v);
}
sort(N.begin(),N.end());
N.erase(unique(N.begin(),N.end()),N.end());
for(int i=0;i<A.size();i++)
A[i]=ox(POS(A[i].x),POS(A[i].y),A[i].sts);
for(int i=0;i<B.size();i++)
B[i]=oy(POS(B[i].x),POS(B[i].y),POS(B[i].Y));
int MX=N.size();
int i=0,j=0;
ll ans=0;
sort(A.begin(),A.end(),cmp1);
sort(B.begin(),B.end(),cmp2);
for(int x0=1;x0<=MX;x0++)
{
while(true)
{
if(i>=A.size()) break;
if(A[i].x<x0) i++;
else if(A[i].x==x0)
{
update(1,MX,1,A[i].y,A[i].sts);
++i;
///cout<<"x";
}
else break;
}
while(true)
{
if(j>=B.size()) break;
if(B[j].x<x0) ++j;
else if(B[j].x==x0)
{
ans+=get(1,MX,1,B[j].y,B[j].Y);
++j;
///cout<<"x";
}
else break;
}
}
cout<<ans;
}
/*
12
-4 1 -1 1
-2 2 3 2
-5 -4 -3 -4
4 2 8 2
1 -1 5 -1
1 -3 5 -3
-4 -4 -4 2
-3 0 -3 3
-1 0 -1 3
2 -2 2 4
3 0 3 -4
7 1 7 4
out : 10
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaT1hO2k8PWI7aSsrKQojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBhbGwodCkgdC5iZWdpbigpLHQuZW5kKCkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxsIGluZj0xZTEwOwpjb25zdCBpbnQgbWF4bj0yMDAwMDM7CgppbnQgbjsKc3RydWN0IG94CnsKICAgIGludCB4LHksc3RzOwogICAgb3goKXt9CiAgICBveChpbnQgeCwgaW50IHksIGludCBzdHMpOgogICAgICAgIHgoeCkseSh5KSxzdHMoc3RzKSB7fQp9OwpzdHJ1Y3Qgb3kKewogICAgaW50IHgseSxZOwogICAgb3koKXt9CiAgICBveShpbnQgeCwgaW50IHksIGludCBZKToKICAgICAgICB4KHgpLHkoeSksWShZKSB7fQp9Owp2ZWN0b3I8b3g+QTsKdmVjdG9yPG95PkI7CnZlY3RvcjxpbnQ+TjsKdm9pZCBBREQoaW50IHgsIGludCB5LCBpbnQgdSwgaW50IHYpCnsKICAgIGlmKHg9PXUpCiAgICAgICAgQi5wYihveSh4LG1pbih5LHYpLG1heCh5LHYpKSk7CiAgICBlbHNlCiAgICB7CgogICAgICAgIGlmKHg+dSkgc3dhcCh4LHUpOwogICAgICAgIEEucGIob3goeCx5LDEpKTsKICAgICAgICBBLnBiKG94KHUrMSx5LC0xKSk7CiAgICB9Cn0KaW50IFBPUyhpbnQgWCkKewogICAgcmV0dXJuIGxvd2VyX2JvdW5kKE4uYmVnaW4oKSxOLmVuZCgpLFgpKzEtTi5iZWdpbigpOwp9CmxsIG5vZGVbbWF4bioxNV07CnZvaWQgdXBkYXRlKGludCBsLCBpbnQgciwgaW50IGxhYiwgaW50IGEsIGxsIHgpCnsKICAgIGlmKGw9PXIpCiAgICB7CiAgICAgICAgbm9kZVtsYWJdKz14OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQ9KGwrcikvMjsKICAgIGlmKGE8PW1pZCkgdXBkYXRlKGwsbWlkLGxhYioyLGEseCk7CiAgICBlbHNlIHVwZGF0ZShtaWQrMSxyLGxhYioyKzEsYSx4KTsKICAgIG5vZGVbbGFiXT1ub2RlW2xhYioyXStub2RlW2xhYioyKzFdOwp9CmxsIGdldChpbnQgbCwgaW50IHIsIGludCBsYWIsIGludCBhLCBpbnQgYikKewogICAgaWYobD5iIHx8IHI8YSkgcmV0dXJuIDA7CiAgICBpZihsPj1hICYmIHI8PWIpIHJldHVybiBub2RlW2xhYl07CiAgICBpbnQgbWlkPShsK3IpLzI7CiAgICByZXR1cm4gZ2V0KGwsbWlkLGxhYioyLGEsYikrZ2V0KG1pZCsxLHIsbGFiKjIrMSxhLGIpOwp9CmJvb2wgY21wMShveCBhLCBveCBiKQp7CiAgICByZXR1cm4gYS54PGIueDsKfQpib29sIGNtcDIob3kgYSwgb3kgYikKewogICAgcmV0dXJuIGEueDxiLng7Cn0KaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCBuOwogICAgY2luPj5uOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgaW50IHgseSx1LHY7CiAgICAgICAgY2luPj54Pj55Pj51Pj52OwogICAgICAgIE4ucGIoeCk7Ti5wYih5KTtOLnBiKHUpO04ucGIodik7CiAgICAgICAgQUREKHgseSx1LHYpOwogICAgfQogICAgc29ydChOLmJlZ2luKCksTi5lbmQoKSk7CiAgICBOLmVyYXNlKHVuaXF1ZShOLmJlZ2luKCksTi5lbmQoKSksTi5lbmQoKSk7CiAgICBmb3IoaW50IGk9MDtpPEEuc2l6ZSgpO2krKykKICAgICAgICBBW2ldPW94KFBPUyhBW2ldLngpLFBPUyhBW2ldLnkpLEFbaV0uc3RzKTsKICAgIGZvcihpbnQgaT0wO2k8Qi5zaXplKCk7aSsrKQogICAgICAgIEJbaV09b3koUE9TKEJbaV0ueCksUE9TKEJbaV0ueSksUE9TKEJbaV0uWSkpOwogICAgaW50IE1YPU4uc2l6ZSgpOwogICAgaW50IGk9MCxqPTA7CiAgICBsbCBhbnM9MDsKICAgIHNvcnQoQS5iZWdpbigpLEEuZW5kKCksY21wMSk7CiAgICBzb3J0KEIuYmVnaW4oKSxCLmVuZCgpLGNtcDIpOwogICAgZm9yKGludCB4MD0xO3gwPD1NWDt4MCsrKQogICAgewogICAgICAgIHdoaWxlKHRydWUpCiAgICAgICAgewogICAgICAgICAgICBpZihpPj1BLnNpemUoKSkgYnJlYWs7CiAgICAgICAgICAgIGlmKEFbaV0ueDx4MCkgaSsrOwogICAgICAgICAgICBlbHNlIGlmKEFbaV0ueD09eDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB1cGRhdGUoMSxNWCwxLEFbaV0ueSxBW2ldLnN0cyk7CiAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgICAgIC8vL2NvdXQ8PCJ4IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGJyZWFrOwogICAgICAgIH0KICAgICAgICB3aGlsZSh0cnVlKQogICAgICAgIHsKICAgICAgICAgICAgaWYoaj49Qi5zaXplKCkpIGJyZWFrOwogICAgICAgICAgICBpZihCW2pdLng8eDApICsrajsKICAgICAgICAgICAgZWxzZSBpZihCW2pdLng9PXgwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhbnMrPWdldCgxLE1YLDEsQltqXS55LEJbal0uWSk7CiAgICAgICAgICAgICAgICArK2o7CiAgICAgICAgICAgICAgICAvLy9jb3V0PDwieCI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxhbnM7Cn0KLyoKMTIKLTQgMSAtMSAxCi0yIDIgMyAyCi01IC00IC0zIC00CjQgMiA4IDIKMSAtMSA1IC0xCjEgLTMgNSAtMwotNCAtNCAtNCAyCi0zIDAgLTMgMwotMSAwIC0xIDMKMiAtMiAyIDQKMyAwIDMgLTQKNyAxIDcgNAoKb3V0IDogMTAKKi8K