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.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.Scanner;
import java.util.Collections;
import java.util.ArrayList;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author Mouna Cheikhna
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        BMicroWorld solver = new BMicroWorld();
        solver.solve(1, in, out);
        out.close();
    }

    static class BMicroWorld {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();

            List<Integer> bacterias = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                bacterias.add(in.nextInt());
            }

            Collections.sort(bacterias);

            int removed = 0;
            boolean equalsFoundBefore = false;
            for (int i = 1; i < n; i++) {
                if (Math.abs(bacterias.get(i - 1) - bacterias.get(i)) == k) {
                    removed += equalsFoundBefore ? 2 : 1;
                } else if (bacterias.get(i - 1).equals(bacterias.get(i))) {
                    equalsFoundBefore = true;
                }
            }
            out.println(n - removed);
        }

    }
}