#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
//英语
int a[10008];
int b[10008];
struct nod{
int D;//距离
int C;//价格
int id;
};
int cmp1(nod x,nod y)
{
//if(x.D!=y.D)
//{
return x.D<y.D;
//}else
//{
// return x.C<y.C;
//}
}
int cmp2(nod x,nod y)
{
//if(x.C!=y.C)
//{
return x.C<y.C;
//}else
//{
// return x.D<y.D;
//}
}
int main()
{
while(1)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
vector<nod> ve;
int n;
cin>>n;
if(n==0)
{
break;
}
for(int i=0;i<n;i++)
{
nod t;
cin>>t.D>>t.C;
t.id=i;
ve.push_back(t);
}
sort(ve.begin(),ve.end(),cmp1);
int qzx=ve[0].C;//钱最小
int bjz=ve[0].C;//比较值
a[ve[0].id]=1;
for(int i=1;i<ve.size();i++)
{
if(ve[i-1].D<ve[i].D)
{
bjz=qzx;
}
if(bjz>ve[i].C)
{
a[ve[i].id]=1;
}
if(qzx>ve[i].C)
{
qzx=ve[i].C;
}
}
sort(ve.begin(),ve.end(),cmp2);
int jzx=ve[0].D;//距离最小
bjz=ve[0].D;
b[ve[0].id]=1;
for(int i=1;i<ve.size();i++)
{
if(ve[i-1].C<ve[i].C)
{
bjz=jzx;
}
if(bjz>ve[i].D)
{
b[ve[i].id]=1;
}
if(jzx>ve[i].D)
{
jzx=ve[i].D;
}
}
int jg=0;
for(int i=0;i<n;i++)
{
if(a[i]==1 && b[i]==1)
{
jg++;
}
}
cout<<jg<<endl;
}
}