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* &lt; *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.
The first line of the input contains two integers *n* and *k* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>, 1 ≤ *k* ≤ 10<sup class="upper-index">9</sup>). The next line contains a list of *n* distinct positive integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>).

All the numbers in the lines are separated by single spaces.
'''
import sys
import math
import bisect
n=int(input())
n,m=map(int,input().split())
arr=list(map(int,input().split()))

t=sys.stdin.buffer.readline()
sys.stdin=open("input.txt")
sys.stdout=open("output.txt", 'w')
sys.stdout.write("Yes" + '\n')
s="abcdefghijklmnopqrstuvwxyz"
mod=1000000007
mod=998244353
vow=['a','e','i','o','u']
t=[[0 for i in range(n)]for j in range(n)]
pow(4,7)
def gcd(x,y):
    while y:
        x,y=y%x,x
    return y'''
n,m=map(int,input().split())
arr=list(map(int,input().split()))
s=[]
for i in range(n):
    if arr[i]%m!=0:
        s.append(arr[i])
    else:
        if arr[i]//m not in s:
            s.append(arr[i])
print(len(s))
