/*
TASk:colxor
LANG:C++
*/
#include<iostream>
#include<stdio.h>
#include<math.h>
#define MAX(a,b)((a>b)?(a):(b))
#define MIN(a,b)((a<b)?(a):(b))
using namespace std;
struct qw{int x,y;} Q[1001];
int n,r1,br,br1;
double r;
void vhod()
{cin>>n>>r;
 r1=ceil(r);
 for(int i=1;i<=n;i++)
  cin>>Q[i].x>>Q[i].y;
}
int wzemira(qw A,qw B)
{double p;
 p=sqrt((MAX(A.x,B.x)-MIN(A.x,B.x))*(MAX(A.x,B.x)-MIN(A.x,B.x))+(MAX(A.y,B.y)-MIN(A.y,B.y))*(MAX(A.y,B.y)-MIN(A.y,B.y)));
 
 return p;
}
void solve()
{int i; 
 qw E,F;
 E.x=65000;
 E.y=65000;
 F.x=-65000;
 F.y=-65000;
 for(int i=1;i<=n;i++)    
  {if(Q[i].x>F.x||Q[i].x==F.x&&Q[i].y>F.y){F.x=Q[i].x;F.y=Q[i].y;}
   if(Q[i].x<E.x||Q[i].x==E.x&&Q[i].y>E.y){E.x=Q[i].x;E.y=Q[i].y;}
  }
 E.x-=r1;E.y-=r1;
 F.x+=r1;F.y+=r1;
 for(int i=E.x;i<=F.x;i++)
  for(int j=E.y;j<=F.y;j++)
    {for(int k=1;k<=n;k++)
      {qw S;S.x=i;S.y=j;
       if(r>=wzemira(S,Q[k]))br1++;
       }
      if(br1==1)br++;
      br1=0;          
     }
 cout<<br<<"\n";
}
int main()
{
vhod(); 
 solve();
 
} 
