#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL N=1e5+10,LG=18,inf=1e8;
LL n,o[N];
struct Mat { LL a,b,c,d; }tk[N];
struct Miku
{LL bin[N*2],tot;void ins(LL x) { bin[++tot]=x; }void init() { sort(bin+1,bin+tot+1); tot=unique(bin+1,bin+tot+1)-bin-1; }LL find(LL x) { return lower_bound(bin+1,bin+tot+1,x)-bin; }
}B1,B2;#define ls (k<<1)
#define rs (k<<1|1)
#define mid ((l+r)>>1)
namespace T1
{const LL M=N*LG*3;struct node { int lson,rson,tag,ver; }t[M];#define LS(u) t[u].lson#define RS(u) t[u].rsonLL ST[M],TOP;void init(){for(int i=0;i<M;i++) ST[i]=i;TOP=M-1;t[0].tag=-inf;}LL newID() { return ST[TOP--]; }void delID(LL u) { ST[++TOP]=u; }void modify(LL L,LL R,int val,int ver,int &k,LL l=1,LL r=n*2){if(l>R||L>r) return;if(!k||t[k].ver!=ver){int p=newID(); t[p]=t[k],k=p;t[k].ver=ver;}if(L<=l&&r<=R) return t[k].tag=max(t[k].tag,val),void();modify(L,R,val,ver,LS(k),l,mid);modify(L,R,val,ver,RS(k),mid+1,r);}void recyc(int ver,int &k,LL l=1,LL r=n*2){if(t[k].ver!=ver||!k) return;if(l!=r) recyc(ver,LS(k),l,mid),recyc(ver,RS(k),mid+1,r);delID(k),k=0;}void dfs(LL k,LL k2,LL k3,int col=0,int mx=-inf,int mn=-inf,LL l=1,LL r=n*2)//k=tag,k2=max,k3=min{if(!k) return;if(k2) mx=max(mx,t[k2].tag);if(k3) mn=max(mn,t[k3].tag);col=max(col,t[k].tag);printf(" [dfs %lld~%lld %d,%d,%d]\n",l,r,col,mx,-mn);if(LS(k)+RS(k)==0)if(max(-mn,mx)<col)o[col]=1;dfs(LS(k),LS(k2),LS(k3),col,mx,mn,l,mid);dfs(RS(k),RS(k2),RS(k3),col,mx,mn,mid+1,r);}
}
namespace Deco
{struct Mod { LL l,r,val; };vector<Mod> t1[N<<2],t2[N<<2];//t1 is tag&max,t2 is minvoid modify(LL L,LL R,Mod v,LL k=1,LL l=1,LL r=n*2){if(l>R||L>r) return;t2[k].push_back(v);if(L<=l&&r<=R) return t1[k].push_back(v),void();modify(L,R,v,ls,l,mid);modify(L,R,v,rs,mid+1,r);}int rt[N<<2];void dfs(LL k=1,LL l=1,LL r=n*2){rt[k]=rt[k>>1];int A=0,B=0;//A is for tag,B for minprintf("[# %lld~%lld]---\n",l,r);for(auto i:t1[k]) T1::modify(i.l,i.r,i.val,0,A);for(auto i:t2[k]) T1::modify(i.l,i.r,-i.val,0,B);T1::dfs(A,rt[k],B);T1::recyc(0,A),T1::recyc(0,B);for(auto i:t1[k]) T1::modify(i.l,i.r,i.val,k,rt[k]);if(l!=r) dfs(ls,l,mid),dfs(rs,mid+1,r);T1::recyc(k,rt[k]);}
}
int main()
{freopen("data.txt","r",stdin);T1::init();scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld%lld%lld%lld",&tk[i].a,&tk[i].b,&tk[i].c,&tk[i].d);tk[i].c--,tk[i].d--;B1.ins(tk[i].a),B1.ins(tk[i].c);B2.ins(tk[i].b),B2.ins(tk[i].d);}B1.init(),B2.init();for(int i=1;i<=n;i++){tk[i].a=B1.find(tk[i].a),tk[i].b=B2.find(tk[i].b);tk[i].c=B1.find(tk[i].c),tk[i].d=B2.find(tk[i].d);
// printf("[%lld~%lld,%lld~%lld]\n",tk[i].a,tk[i].c,tk[i].b,tk[i].d);Deco::modify(tk[i].a,tk[i].c,{tk[i].b,tk[i].d,i});}Deco::dfs();LL ans=0; for(int i=1;i<=n;i++) ans+=o[i];printf("%lld",ans+1);return 0;
}