A k-multiple free set is a set of integers where there is no pair of integers where one is equal to another integer multiplied by k. That is, there are no two integers x and y (x < y) from the set, such that y = x·k.

You're given a set of n distinct positive integers. Your task is to find the size of it's largest k-multiple free subset.

Input

The first line of the input contains two integers n and k (1 ≤ n ≤ 105, 1 ≤ k ≤ 109). The next line contains a list of n distinct positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).

All the numbers in the lines are separated by single spaces.

Output

On the only line of the output print the size of the largest k-multiple free subset of {a1, a2, ..., an}.

Examples

Input

6 2
2 3 6 5 4 10


Output

3

Note

In the sample input one of the possible maximum 2-multiple free subsets is {4, 5, 6}.
import static java.lang.Math.*;
import static java.util.Arrays.*;

import java.util.*;
import java.io.*;

public class C {

    void run() {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();long k = sc.nextLong();
        long[] a = new long[n];
        boolean[] used = new boolean[n];
        for(int i=0;i<n;i++) a[i] = Long.parseLong(sc.next());
        sort(a);
        int cnt = 0;
        for(int i=0;i<n;i++) if(!used[i]){
            int p = binSearch(a, a[i]*k);
            if( p > 0 ) {
                used[p] = true;
            }
            cnt++;
        }
        System.out.println(cnt);
    }
    
    int binSearch(long[] a, long v) {
        int l = 0, r = a.length;
        while(l<r) {
            int c = (l+r)/2;
            debug(l, r, a[c], v);
            if(a[c] == v) return c;
            if( a[c] < v ) l = c+1;
            if( a[c] > v ) r = c;
        }
        return -1;
    }

    void debug(Object... os) {
//      System.err.println(Arrays.deepToString(os));
    }

    public static void main(String[] args) {
        new C().run();
    }
}
