数菌落
题号:NC216199
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Z是个讨厌生物学的初中生,对于生物课的作业他是能拖就拖,能省就省。但有一天老师要教同学们如何利用显微镜观察细胞、细菌等,并且布置了一项随堂作业:对于手中的细菌标本,通过观察确定在上面有多少个菌落。

由于小Z不喜欢生物课,并没有认真听老师的教学,只知道观察单个细菌需要的目镜和物镜的倍数搭配,而不知道直接观察菌落的搭配,所以在小Z的视野中只有n个独立的细菌细胞,为了能交上作业,他决定当两个细胞在视野中的距离不超过d则认为这两个细胞在同一个菌落,这样就能得到了一个看似菌落数的答案。

但这样的过程让小Z觉得十分麻烦,他选择把这n个细菌在视野中的坐标和设定的距离d告诉你,让你帮他算出有多少个菌落。
注:显微镜视野看做一个矩形的平面,细菌细胞坐标均为整数值,且保证不出现两个细胞在同一个点上。并且如果细胞a和细胞b在同一菌落,bc在同一菌落,即使ac的距离大于d,由于b的存在会连接ac,所以ac也视为在同一菌落,即a,b,c都在同一菌落。

输入描述:

首先第一行为两个整数:n(1≤n≤1000),d(0≤d≤100);
接下来n行,每行两个整数:x,y(-10000≤x,y≤10000),表示在点(x,y)有一个细胞。

输出描述:

输出一个整数,表示通过小Z的方法计算出的菌落数。

示例1

输入

复制
4 0
1 1 
2 2
3 4
5 6

输出

复制
4

说明


示例2

输入

复制
4 2
1 1 
2 2
3 4
5 6

输出

复制
3
示例3

输入

复制
5 100
1 1 
2 2
3 4
5 6
100 100

输出

复制
2