def dfs(x, prev, h): for to_x in to[x]: if to_x != prev and (to_x not in delete) and H[to_x] < h: delete.add(to_x) dfs(to_x, x, H[to_x]) ########################################################################## import sys; sys.setrecursionlimit(10**7) from heapq import heapify, heappop, heappush from math import dist N, K = map(int,input().split()) H = list(map(int,input().split())) XY = [list(map(int,input().split())) for _ in range(N)] to = [[] for _ in range(N)] for i in range(N-1): for j in range(i+1, N): if dist(XY[i], XY[j]) <= K: to[i].append(j) to[j].append(i) delete = set() Hi = [(-H[i], i) for i in range(N)] heapify(Hi) ans = 0 while Hi: h, i = heappop(Hi) if i not in delete: ans += 1 dfs(i, -1, -h) print(ans)