#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("pachete.in");
ofstream g("pachete.out");
long long n,fx,fy,vx[50005],vy[50005],k1,k2,k3,k4;
double z1[50005],z2[50005],z3[50005],z4[50005];
void Read()
{ int i;
f>>n>>fx>>fy;
for(i=1;i<=n;i++)
{ f>>vx[i]>>vy[i];
vx[i]-=fx;
vy[i]-=fy;
//cout<<vx[i]<<" "<<vy[i]<<"\n";
}
}
double dist(long long x1,long long y1,long long x2,long long y2)
{ double d;
d=(double)((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2));
d=(double) sqrt(d);
return (double)d;
}
void Solve()
{ double sn; long long i,sol=0;
k1=0; k2=0; k3=0; k4=0;
for(i=1;i<=n;i++)
{ sn=(double) dist(vx[i],vy[i],vx[i],0)/dist(vx[i],vy[i],0,0);
if (vx[i]>0 && vy[i]>0) {k1++; sn=(double) dist(vx[i],vy[i],vx[i],0)/dist(vx[i],vy[i],0,0);z1[k1]=sn; }
if (vx[i]>0 && vy[i]<0) {k2++; vy[i]*=-1; sn=(double) dist(vx[i],vy[i],vx[i],0)/dist(vx[i],vy[i],0,0);z2[k2]=sn;}
if (vx[i]<0 && vy[i]<0) {k3++; vx[i]*=-1; vy[i]*=-1; sn=(double) dist(vx[i],vy[i],vx[i],0)/dist(vx[i],vy[i],0,0);z3[k3]=sn; }
if (vx[i]<0 && vy[i]>0) {k4++; vx[i]*=-1; sn=(double) dist(vx[i],vy[i],vx[i],0)/dist(vx[i],vy[i],0,0);z4[k4]=sn; }
}
sort(z1+1,z1+k1+1);
sort(z2+1,z2+k2+1);
sort(z3+1,z3+k3+1);
sort(z4+1,z4+k4+1);
for(i=1;i<=k1;i++)
if (z1[i]-z1[i-1]>1e-9 || i==1) sol++;
for(i=1;i<=k2;i++)
if (z2[i]-z2[i-1]>1e-9 || i==1) sol++;
for(i=1;i<=k3;i++)
if (z3[i]-z3[i-1]>1e-9 || i==1) sol++;
for(i=1;i<=k4;i++)
if (z4[i]-z4[i-1]>1e-9 || i==1) sol++;
g<<sol;
}
int main()
{ Read();
Solve();
return 0;
}