/*
TASK:colxor
LANG:C++
*/
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>
#include <map>

using namespace std;

long n,r;

vector<long> rr,xp,yp;
vector<map<long,bool> > w(22002);

vector<bool> mm(1<<29);

int main()
{
    long i,j,k,l,t,x,y,xx,yy;
    unsigned long long ans=0;
    double ii;
    cin>>n>>r;

    for (y=0; y<r; y++)
     {
       ii=sqrt((double)(r*r-y*y));
       rr.push_back(ii);
       if (ii-(double)rr[rr.size()-1]>0.000001) rr[rr.size()-1]++;
     }
    
if (n*r*r<=2000000)
{
    for (k=0; k<n; k++)
     { cin>>x>>y;
       for (i=0; i<r; i++)
        for (j=-rr[i]+1; j<=rr[i]; j++)
        { 
          t=i+y+11001;
          l=w[t][j+x];
          if (l) { w[t][j+x]=0; ans--; }
          else { w[t][j+x]=1; ans++; }
        }
       for (i=0; i<r; i++)
        for (j=-rr[i]+1; j<=rr[i]; j++)
        { t=y-i-1+11001;
          l=w[t][j+x];
          if (l) { w[t][j+x]=0; ans--; }
          else { w[t][j+x]=1; ans++; }
        }
     }
    cout<<ans<<"\n";
}
else
{
    long minx=10001,miny=10001;
    for (k=0; k<n; k++)
     { cin>>x>>y; xp.push_back(x); yp.push_back(y);
       if (x<minx) minx=x; if (y<miny) miny=y;
       }
       minx-=r+1; miny-=r+1;
    for (k=0; k<n; k++)
     { x=xp[k];    y=yp[k];
       for (i=0; i<r; i++)
        for (j=-rr[i]+1; j<=rr[i]; j++)
        { 
          yy=i+y-miny;
          xx=j+x-minx;
          l=(yy<<15)+xx;
          if (mm[l]) { mm[l]=0; ans--; }
          else { mm[l]=1; ans++; }
        }
       for (i=0; i<r; i++)
        for (j=-rr[i]+1; j<=rr[i]; j++)
        { yy=y-i-1-miny;
          xx=j+x-minx;
          l=(yy<<15)+xx;
          if (mm[l]) { mm[l]=0; ans--; }
          else { mm[l]=1; ans++; }
        }
     }
    cout<<ans<<"\n";
}
   
//    system("pause");
    return 0;
}
