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.*;
import java.util.*;

public class _990B {
    static StreamTokenizer in = new StreamTokenizer(new BufferedInputStream(System.in));
    static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
    static final int getInt()throws Exception{
        in.nextToken();
        return (int)in.nval;
    }
    public static void main(String[] args)throws Exception {
        int n,k;
        n=getInt();k=getInt();
        LinkedList<Integer> v=new LinkedList<Integer>();
        for(int i=1;i<=n;++i){
            int t;
            t=getInt();
            v.addLast(t);
        }
        Collections.sort(v);/*
        for(ListIterator<Integer> it=v.listIterator();it.hasNext();) {
            int t=it.next();
            System.out.printf("%d ", t);
            if(it.hasPrevious()){
                System.out.printf("%d ", it.previous());
                if(it.hasPrevious()){
                    System.out.printf("%d ", it.previous());
                    it.next();
                }
                it.next();
            }
        }
        System.out.println();*//*
        for(int i=1;i<v.size();++i){
            if(i==0){
                continue;
            }
            while(i>0&&i<v.size()&&v.get(i)>v.get(i-1)&&v.get(i)-v.get(i-1)<=k){
                v.remove(i-1);
                --i;
            }
        }*/
        for(ListIterator<Integer> it=v.listIterator();it.hasNext();){
        //    System.out.println(it.nextIndex());
            if(!it.hasPrevious()) {
                it.next();
                continue;
            }
            while(it.hasPrevious()){
                int cur=it.next();it.previous();int pre=it.previous();it.next();
                ListIterator<Integer> pit=it;
            //    System.out.printf("pre=%d cur=%d%n",pre,cur);
                if(pre<cur&&cur-pre<=k){
            //        System.out.println("#");
                    pit.remove();
                }else{
            //        System.out.println("@");
                    break;
                }
            }
            if(!it.hasNext()){
                break;
            }else{
                it.next();
            }
        }
        out.println(v.size());
        out.flush();
    }
}
