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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class MicroWorld {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MyScanner input = new MyScanner();
		int n = input.nextInt();
		int k = input.nextInt();
		int[] arr = new int[n];
		for(int i=0; i<n;i++)arr[i] = input.nextInt();
		Arrays.sort(arr);
		int counter=1;
		for(int i=1; i<n;i++){
			if(arr[i]>arr[i-1] && arr[i]<=arr[i-1]+k)continue;
			else if(arr[i]!=arr[i-1]){	
				int j = i-1;
				while(j>=0 && arr[j]==arr[i-1]){counter++;j--;}
			}
				
			
		}
		System.out.println(counter);
	}

	



	static class MyScanner {
			BufferedReader br;
			StringTokenizer st;
			public MyScanner() {
				br = new BufferedReader(new InputStreamReader(System.in));
			}
			String next() {while (st == null || !st.hasMoreElements()) {
				try {st = new StringTokenizer(br.readLine());}
				catch (IOException e) {e.printStackTrace();}}
			return st.nextToken();}
			int nextInt() {return Integer.parseInt(next());}
			long nextLong() {return Long.parseLong(next());}
			double nextDouble() {return Double.parseDouble(next());}
			String nextLine(){String str = "";
			try {str = br.readLine();}
			catch (IOException e) {e.printStackTrace();}
			return str;}
		}
	
}
