#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// - Đếm số cặp (x, y) sao cho sum{|x - x(i)| + |y - y(i)|} <= d
// - Từ giới hạn đề cho ta có thể tính ra được -2e6 <= x, y <= 2e6
// - Nhận xét: Ta có thể biến đổi tổng trên thành sum{|x - x(i)|} + sum{|y - y(i)|} <= d
// Từ đó, đặt val_x(x) = sum{|x - x(i)|}, val_y(y) = sum{|y - y(i)|}
// => Bài toán quy về đếm số cặp (x, y) sao cho val_x(x) + val_y(y) <= d
// - Ta có thể tính trước val_x(x) cho mọi x với -2e6 <= x <= 2e6 (binary search/2 pointers, prefix sum,...)
// Tương tự với val_y(y) cho mọi y với -2e6 <= y <= 2e6
// - Sau khi đã có val_x(x), val_y(y) thì bài toán còn lại cũng có thể giải quyết đơn giản bằng binary search/2 pointers, prefix sum,...
const int N = 2e5 + 5;
const int D = 1e6 + 5;
int n, d;
int x[N], y[N];
ll pref_x[N], pref_y[N];
int cnt_x[D]; // cnt_x[i] = Số giá trị x thoả mãn val_x(x) <= i
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> d;
for (int i = 1; i <= n; i++) {
cin >> x[i] >> y[i];
}
sort(x + 1, x + n + 1);
sort(y + 1, y + n + 1);
for (int i = 1; i <= n; i++) {
pref_x[i] = pref_x[i - 1] + x[i];
pref_y[i] = pref_y[i - 1] + y[i];
}
for (int cx = -2e6, i = 0; cx <= 2e6; cx++) {
while (i < n && x[i + 1] <= cx) i++;
int cnt_lo = i, cnt_hi = n - i;
ll sum_lo = pref_x[i], sum_hi = pref_x[n] - sum_lo;
ll val_x = (1ll * cnt_lo * cx - sum_lo) + (sum_hi - 1ll * cnt_hi * cx);
if (val_x <= d) cnt_x[val_x]++;
}
for (int val_x = 1; val_x <= d; val_x++) cnt_x[val_x] += cnt_x[val_x - 1];
ll ans = 0;
for (int cy = -2e6, i = 0; cy <= 2e6; cy++) {
while (i < n && y[i + 1] <= cy) i++;
int cnt_lo = i, cnt_hi = n - i;
ll sum_lo = pref_y[i], sum_hi = pref_y[n] - sum_lo;
ll val_y = (1ll * cnt_lo * cy - sum_lo) + (sum_hi - 1ll * cnt_hi * cy);
if (val_y <= d) ans += cnt_x[d - val_y];
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gLSDEkOG6v20gc+G7kSBj4bq3cCAoeCwgeSkgc2FvIGNobyBzdW17fHggLSB4KGkpfCArIHx5IC0geShpKXx9IDw9IGQKLy8gLSBU4burIGdp4bubaSBo4bqhbiDEkeG7gSBjaG8gdGEgY8OzIHRo4buDIHTDrW5oIHJhIMSRxrDhu6NjIC0yZTYgPD0geCwgeSA8PSAyZTYKLy8gLSBOaOG6rW4geMOpdDogVGEgY8OzIHRo4buDIGJp4bq/biDEkeG7lWkgdOG7lW5nIHRyw6puIHRow6BuaCBzdW17fHggLSB4KGkpfH0gKyBzdW17fHkgLSB5KGkpfH0gPD0gZAovLyAgIFThu6sgxJHDsywgxJHhurd0IHZhbF94KHgpID0gc3Vte3x4IC0geChpKXx9LCB2YWxfeSh5KSA9IHN1bXt8eSAtIHkoaSl8fQovLyAJID0+IELDoGkgdG/DoW4gcXV5IHbhu4EgxJHhur9tIHPhu5EgY+G6t3AgKHgsIHkpIHNhbyBjaG8gdmFsX3goeCkgKyB2YWxfeSh5KSA8PSBkCi8vIC0gVGEgY8OzIHRo4buDIHTDrW5oIHRyxrDhu5tjIHZhbF94KHgpIGNobyBt4buNaSB4IHbhu5tpIC0yZTYgPD0geCA8PSAyZTYgKGJpbmFyeSBzZWFyY2gvMiBwb2ludGVycywgcHJlZml4IHN1bSwuLi4pIAovLyAgIFTGsMahbmcgdOG7sSB24bubaSB2YWxfeSh5KSBjaG8gbeG7jWkgeSB24bubaSAtMmU2IDw9IHkgPD0gMmU2Ci8vIC0gU2F1IGtoaSDEkcOjIGPDsyB2YWxfeCh4KSwgdmFsX3koeSkgdGjDrCBiw6BpIHRvw6FuIGPDsm4gbOG6oWkgY8WpbmcgY8OzIHRo4buDIGdp4bqjaSBxdXnhur90IMSRxqFuIGdp4bqjbiBi4bqxbmcgYmluYXJ5IHNlYXJjaC8yIHBvaW50ZXJzLCBwcmVmaXggc3VtLC4uLgogCmNvbnN0IGludCBOID0gMmU1ICsgNTsgCmNvbnN0IGludCBEID0gMWU2ICsgNTsgCgppbnQgbiwgZDsgIAppbnQgeFtOXSwgeVtOXTsgCmxsIHByZWZfeFtOXSwgcHJlZl95W05dOwppbnQgY250X3hbRF07IC8vIGNudF94W2ldID0gU+G7kSBnacOhIHRy4buLIHggdGhv4bqjIG3Do24gdmFsX3goeCkgPD0gaQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gZDsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNpbiA+PiB4W2ldID4+IHlbaV07IAoJfQoJc29ydCh4ICsgMSwgeCArIG4gKyAxKTsgIAoJc29ydCh5ICsgMSwgeSArIG4gKyAxKTsgIAoJCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlwcmVmX3hbaV0gPSBwcmVmX3hbaSAtIDFdICsgeFtpXTsgCgkJcHJlZl95W2ldID0gcHJlZl95W2kgLSAxXSArIHlbaV07IAkKCX0KCQoJZm9yIChpbnQgY3ggPSAtMmU2LCBpID0gMDsgY3ggPD0gMmU2OyBjeCsrKSB7CgkJd2hpbGUgKGkgPCBuICYmIHhbaSArIDFdIDw9IGN4KSBpKys7ICAgCgkJaW50IGNudF9sbyA9IGksIGNudF9oaSA9IG4gLSBpOyAgIAoJCWxsIHN1bV9sbyA9IHByZWZfeFtpXSwgc3VtX2hpID0gcHJlZl94W25dIC0gc3VtX2xvOwoJCWxsIHZhbF94ID0gKDFsbCAqIGNudF9sbyAqIGN4IC0gc3VtX2xvKSArIChzdW1faGkgLSAxbGwgKiBjbnRfaGkgKiBjeCk7IAoJCWlmICh2YWxfeCA8PSBkKSBjbnRfeFt2YWxfeF0rKzsgCgl9Cglmb3IgKGludCB2YWxfeCA9IDE7IHZhbF94IDw9IGQ7IHZhbF94KyspIGNudF94W3ZhbF94XSArPSBjbnRfeFt2YWxfeCAtIDFdOyAKCQoJbGwgYW5zID0gMDsgIAoJZm9yIChpbnQgY3kgPSAtMmU2LCBpID0gMDsgY3kgPD0gMmU2OyBjeSsrKSB7CgkJd2hpbGUgKGkgPCBuICYmIHlbaSArIDFdIDw9IGN5KSBpKys7ICAgCgkJaW50IGNudF9sbyA9IGksIGNudF9oaSA9IG4gLSBpOyAgIAoJCWxsIHN1bV9sbyA9IHByZWZfeVtpXSwgc3VtX2hpID0gcHJlZl95W25dIC0gc3VtX2xvOwoJCWxsIHZhbF95ID0gKDFsbCAqIGNudF9sbyAqIGN5IC0gc3VtX2xvKSArIChzdW1faGkgLSAxbGwgKiBjbnRfaGkgKiBjeSk7IAoJCWlmICh2YWxfeSA8PSBkKSBhbnMgKz0gY250X3hbZCAtIHZhbF95XTsgCgl9CgkKCWNvdXQgPDwgYW5zIDw8ICdcbic7IAp9