2 1
1 1
 4 1
2 2 1 1
 10 1
2 6 3 4 2 4 4 3 2 1
 2 1
999152 999153
 8 1000000
1 1 5 1000000 1000000 2 2 2
 9 2
1 6 1 5 5 8 6 8 7
 15 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 4
8
 10 1
6 3 1 3 6 4 1 3 6 4
 10 1
1 2 3 5 6 8 10 11 9 4
 7 2
1 5 5 8 9 8 8
 2 1000000
1 1000000
 8 2
3 13 9 8 3 13 9 14
 1 1
1
 2 1
1 2

2
 2
 4
 1
 2
 4
 15
 1
 7
 2
 4
 1
 5
 1
 1

import java.util.*;

public class Solution {
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		int n = sc.nextInt(),k = sc.nextInt();
		ArrayList<Integer> al = new ArrayList<Integer>();
		HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
		for(int i=0;i<n;i++){
			int x=sc.nextInt();
			al.add(x);
			/*if(i==0)
				al.add(x);
			else{
				int j=0;
				while(j<al.size()){			
					if(x<al.get(j)){
						break;
					}
					j++;
				}
				al.add(j, x);			
			}*/
		}
		Collections.sort(al);
		
		for(int i=0;i<al.size();i++){
			int x=al.get(i);
			if(!hm.containsKey(x)){
				hm.put(x,1);
			}
			else{
				hm.put(x,hm.get(x)+1);
			}
		}
		
		int o=0,ct=0;	
		for(int i=0;i<al.size()-1;i++){
			int p=al.get(i);
			int j=i+1;
			int u=hm.get(p);
			if(u>1){
			hm.put(p,u--);
			j=i+u;}
			while(j<al.size()){
				if(p+k<al.get(j))
					break;
				if(p+k>=al.get(j)&&al.get(j)>p){
					ct++;break;
				}
				else if(p==al.get(j)){
					o++;
				}
				j++;
			}
			
		}
		
		System.out.println(n-ct);
	}
}