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}.
#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  if (k == 1) {
    printf("%d", n);
    return 0;
  }
  map<int, vector<int> > a;
  while (n--) {
    int x;
    scanf("%d", &x);
    int y = x;
    while (y % k == 0) y /= k;
    a[y].push_back(x);
  }
  int ans = 0;
  for (auto i : a) {
    vector<int> tmp = i.second;
    sort(tmp.begin(), tmp.end());
    int last = tmp[0];
    for (int j = 0; j < tmp.size(); j++) {
      char take = false;
      if (!j)
        take = true;
      else if (last * k != tmp[j])
        take = true;
      if (!take) continue;
      last = tmp[j];
      ans++;
    }
  }
  printf("%d", ans);
  return 0;
}
