#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long int ull;
typedef long long int ll;
typedef pair<ll,ll> pll;
typedef long double D;
typedef complex<D> P;
#define F first
#define S second
const ll MOD=1000000007;
//const ll MOD=998244353;

template<typename T,typename U>istream & operator >> (istream &i,pair<T,U> &A){i>>A.F>>A.S; return i;}
template<typename T>istream & operator >> (istream &i,vector<T> &A){for(auto &I:A){i>>I;} return i;}
template<typename T,typename U>ostream & operator << (ostream &o,const pair<T,U> &A){o<<A.F<<" "<<A.S; return o;}
template<typename T>ostream & operator << (ostream &o,const vector<T> &A){int i=A.size(); for(auto &I:A){o<<I<<(--i?" ":"");} return o;}

ll dist(pll a,pll b){return max(abs(a.F-b.F),abs(a.S-b.S));}

int main(){
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll N,p,q;
  cin>>N>>p>>q;
  p--; q--;
  vector<pll> A(N);
  cin>>A;
  map<ll,set<ll>> X,Y;
  map<ll,vector<ll>> cntX,cntY;
  for(auto &I:A){
    pll a=I;
    I.F=a.F-a.S;
    I.S=a.F+a.S;
    cntX[I.F].push_back(I.S);
    cntY[I.S].push_back(I.F);
    if(I==A[p]){continue;}
    X[I.F].insert(I.S);
    Y[I.S].insert(I.F);
  }
  
  for(auto &I:cntX){sort(I.S.begin(),I.S.end());}
  for(auto &I:cntY){sort(I.S.begin(),I.S.end());}
  queue<pll> Q;
  ll dis=dist(A[p],A[q]);
  Q.push(A[p]);
  ll ans=0;
  
  auto diffr=
    [](map<ll,vector<ll>> &M,ll x,ll mi,ll mx)->ll{
      if(M.count(x)==0){return 0;}
      auto &vec=M[x];
      return lower_bound(vec.begin(),vec.end(),mx)
        -lower_bound(vec.begin(),vec.end(),mi);
    };
  
  
  auto counter=
    [&](pll a){
      ll ret=0;
      ret+=diffr(cntX,a.F-dis,a.S-dis,a.S+dis);
      ret+=diffr(cntY,a.S+dis,a.F-dis,a.F+dis);
      ret+=diffr(cntX,a.F+dis,a.S-dis+1,a.S+dis+1);
      ret+=diffr(cntY,a.S-dis,a.F-dis+1,a.F+dis+1);
      return ret;
    };

  

  auto update2=
    [&](map<ll,set<ll>> &M,ll x,ll mi,ll mx,bool xp){
      if(M.count(x)==0){return;}
      auto &vec=M[x];
      auto I=vec.lower_bound(mi);
      while(I!=vec.end() && *I<=mx){
        if(xp){Q.push({x,*I});}
        else{Q.push({*I,x});}
        I=vec.erase(I);
      }
    };

  auto update1=
    [&](pll a){
      update2(X,a.F-dis,a.S-dis,a.S+dis,true);
      update2(Y,a.S-dis,a.F-dis,a.F+dis,false);
      update2(X,a.F+dis,a.S-dis,a.S+dis,true);
      update2(Y,a.S+dis,a.F-dis,a.F+dis,false);
    };
  
  while(!Q.empty()){
    pll u=Q.front();
    Q.pop();
    update1(u);
  }

  //cout<<A<<endl;
  
  for(auto &I:A){
    //cout<<I<<" "<<counter(I)<<endl;
    if(X[I.F].count(I.S)==0 ||  Y[I.S].count(I.F)==0){
      ans+=counter(I);
    }
  }
  assert(ans%2==0);
  ans/=2;
  cout<<ans<<endl;
  

  return 0;
}
