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}.
/*
PROG: b
LANG: JAVA
*/
import java.util.*;
import java.io.*;

public class c {
   int n, k;
   private void solve() throws Exception {
      //BufferedReader br = new BufferedReader(new FileReader("c.in"));
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      StringTokenizer sc = new StringTokenizer(br.readLine());
      n = Integer.parseInt(sc.nextToken());
      k = Integer.parseInt(sc.nextToken());
      Long[] a= new Long[n];
      Set<Long> se = new HashSet<Long>();
      boolean[] ha = new boolean[n];
      sc = new StringTokenizer(br.readLine());
      for(int i = 0; i < n; ++i) 
         a[i] = Long.parseLong(sc.nextToken());
      Arrays.sort(a);
      for(int i = 0; i < n; ++i)
         ha[i] = Arrays.binarySearch(a, a[i] * k) > -1;
      for(int i = 0; i < n; ++i)
         if(!se.contains(a[i])) 
            se.add(a[i] * k); 
      System.out.println(se.size());
   }

   public static void main(String[] args) throws Exception {
      new c().solve();
   }

   static void debug(Object...o) {
      System.err.println(Arrays.deepToString(o));
   }

}
