/*
TASK: colxor
LANG: C++
*/
#include <stdio.h>
#include <iostream>
#include <vector>
#include <math.h>
#define min(a,b) (a < b ? a : b)
#define max(a,b) (a > b ? a : b)
#define maxn 1024
#define FOR(i,n) for(int i=0;i<(int)n;i++)
#define debln(a) cout << #a << " : " << a << endl;
using namespace std;

struct point {
       int x,y;
       point() {}
       point(int _x,int _y) {
                 x = _x;
                 y = _y;
       }
} v[maxn];
int n,r;
int minx,miny,maxx,maxy;
vector< vector<bool> > a;
void init() {
     scanf("%d%d",&n,&r);
     FOR(i,n) {
              scanf("%d %d",&v[i].x,&v[i].y);
              minx = min(minx,v[i].x - r);
              miny = min(miny,v[i].y - r);
     }
     FOR(i,n) {
         v[i].x += (-minx);
         v[i].y += (-miny);
         maxx = max(maxx, v[i].x + r);
         maxy = max(maxy, v[i].y + r);
     }
}
void paintDL(int x,int y) {
     int half = r / 2 + (r & 1);
     int end = r;
     for(int i=0;i<r;i++) {
             if(i>=half) end--;
             for(int j=0;j<end;j++)
                 a[y-j][x-i] = a[y-j][x-i] ^ 1;
     }
}
void paintUL(int x,int y) {
     int half = r / 2 + (r & 1);
     int end = r + 1; 
     for(int i=0;i<r;i++) {
             if(i>=half) end--;
             for(int j=1;j<end;j++) 
                  a[y+j][x-i] = a[y+j][x-i] ^ 1;
     }
}
void paintDR(int x,int y) {
      int half = r/2 + (r & 1);
      int end = r;
      for(int i=1;i<=r;i++) {
         if(i>=(half+1)) end--;
         for(int j=0;j<end;j++)
              a[y-j][x+i] = a[y-j][x+i] ^ 1;
      }
}
void paintUR(int x,int y) 
{
     int half = r/2 + (r & 1);
     int end = r + 1;
     for(int i=1;i<=r;i++){
             if(i>half) end--;
             for(int j=1;j<end;j++)
                a[y+j][x+i] = a[y+j][x+i] ^ 1;
     }
}
int main() {
    minx = 0;
    miny = 0;
    maxx = 0;
    maxy = 0;
    init();
    
    a.resize(maxy+2);
    FOR(i,a.size()) a[i].resize(maxx+2,0);
    
    FOR(i,n) {
       paintDL(v[i].x,v[i].y);
       paintUL(v[i].x,v[i].y);
       paintDR(v[i].x,v[i].y);
       paintUR(v[i].x,v[i].y);
    }
    int res(0);
    FOR(i,a.size()) FOR(j,a[i].size()) res += a[i][j];
    printf("%d\n",res);
    return 0;
}
