#include <bits/stdc++.h>
const int mod = 998244353;
using ll = long long;
int n, k, x[55], y[55], h[55 * 55 * 2 + 10], tl, a[55], b[55];
namespace SC {
struct data {
  int p, l, r, det;
};
data dat(int a, int b, int c, int d) {
  data r;
  r.p = a;
  r.l = b;
  r.r = c;
  r.det = d;
  return r;
}
std::vector<data> v;
void reset() { v.clear(); }
void ins(int p, int l, int r, int det) { v.push_back(dat(p, l, r, det)); }
int Magic() {
  int ans = 0;
  std::sort(v.begin(), v.end(), [](data a, data b) { return a.p < b.p; });
  std::vector<std::pair<int, int> > cur;
  for (int i = 0; i < v.size(); ++i) {
    std::pair<int, int> p = {v[i].l, v[i].det};
    cur.insert(std::lower_bound(cur.begin(), cur.end(), p), p);
    p = {v[i].r + 1, -v[i].det};
    cur.insert(std::lower_bound(cur.begin(), cur.end(), p), p);
    int len = 0, pre = 0;
    for (int j = 0; j + 1 < cur.size(); ++j) {
      pre += cur[j].second;
      if (cur[j + 1].first != cur[j].first) assert(pre >= 0);
      if (pre > 0) len += cur[j + 1].first - cur[j].first;
    }
    if (i + 1 < v.size()) {
      if (v[i + 1].p > v[i].p)
        ans = (ans + (ll)len * (v[i + 1].p - v[i].p) % mod) % mod;
    }
  }
  return ans;
}
}  // namespace SC
int calc(int k) {
  SC::reset();
  for (int i = 1; i <= n; ++i) {
    int l1 = a[i] - k + 1, r1 = a[i] + k - 1;
    int l2 = b[i] - k + 1, r2 = b[i] + k - 1;
    SC::ins(l1, l2, r2, 1);
    SC::ins(r1 + 1, l2, r2, -1);
  }
  return SC::Magic();
}
int inv(int x) { return x == 1 ? 1 : (ll)(mod - mod / x) * inv(mod % x) % mod; }
int StarlightGlimmer(int n, int k) {
  int ans = 0;
  for (int i = 1; i <= n; ++i) {
    int u = y[i], d = 1;
    for (int j = 1; j <= n; ++j) {
      if (j == i) continue;
      u = (ll)u * (k - x[j] + mod) % mod;
      d = (ll)d * (x[i] - x[j] + mod) % mod;
    }
    ans = (ans + (ll)u * inv(d) % mod) % mod;
  }
  return ans;
}
int main() {
  scanf("%d%d", &n, &k);
  k++;
  for (int i = 1; i <= n; ++i) scanf("%d%d", &a[i], &b[i]);
  for (int i = 1; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j) {
      int t =
          (1 + std::max(std::abs(a[i] - a[j]), std::abs(b[i] - b[j]))) / 2 + 1;
      if (t <= k) h[++tl] = t;
    }
  h[++tl] = 1;
  h[++tl] = k + 1;
  std::sort(h + 1, h + tl + 1);
  tl = std::unique(h + 1, h + tl + 1) - (h + 1);
  int sum = (ll)(k)*calc(k) % mod;
  int ans = 0;
  for (int i = 1; i < tl; ++i) {
    int l = h[i], r = h[i + 1] - 1;
    if (r - l + 1 <= 5)
      for (int j = l; j <= r; ++j) ans = (ans + calc(j)) % mod;
    else {
      for (int j = 1; j <= 5; ++j) {
        y[j] = (y[j - 1] + calc(l + j - 1)) % mod;
        x[j] = l + j - 1;
      }
      ans = (ans + StarlightGlimmer(4, r)) % mod;
    }
  }
  printf("%d", (sum - ans + mod) % mod);
  return 0;
}
