RT,谢谢好心人
//#pragma GCC optimize(2)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<vector>
#define INF 0x7fffffff
using namespace std;
const unsigned int N=1e4+15;
struct Node{
int x;
int y;
int id;
}b[N];
bool cmp1(struct Node a,struct Node b){
return a.x<b.x;
}
bool cmp2(struct Node a,struct Node b){
return a.y<b.y;
}
int s[N][N],a[N][N],x[N],y[N];
int n,ans=INF;
void read(int &x){
x=0;
int y=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')
y=-1;
ch=getchar();
}
while(isdigit(ch)){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
x*=y;
}
int square(int x1,int y1,int x2,int y2){
return s[x2][y2]-s[x2][y1]-s[x1][y2]+s[x1][y1];
}//求区域奶牛个数
signed main(){
read(n);
for(register int i=1;i<=n;i++){
read(b[i].x);
read(b[i].y);
b[i].id=i;
}
sort(b+1,b+n+1,cmp1);
for(register int i=1;i<=n;i++)
x[b[i].id]=i;
sort(b+1,b+n+1,cmp2);
for(register int i=1;i<=n;i++)
y[b[i].id]=i;
for(register int i=1;i<=n;i++)
a[x[i]][y[i]]++;//离散化
for(register int i=1;i<=n;i++)
for(register int j=1;j<=n;j++)
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];//前缀和预处理
for(register int i=1;i<=n+1;i++)
for(register int j=1;j<=n+1;j++){
int vmax=-1;
int v1=square(1,1,i,j);
int v2=square(1,j,i,n);
int v3=square(i,1,n,j);
int v4=square(i,j,n,n);
vmax=max(vmax,v1);
vmax=max(vmax,v2);
vmax=max(vmax,v3);
vmax=max(vmax,v4);
ans=min(vmax,ans);
}
printf("%d\n",ans);
return 0;
}