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}.
# Problem: A. k-Multiple Free Set
# Contest: Codeforces - Codeforces Round #168 (Div. 1)
# URL: https://codeforces.com/problemset/problem/274/A
# Memory Limit: 256 MB
# Time Limit: 2000 ms
# 
# KAPOOR'S

from sys import stdin, stdout 

def INI():
	return int(stdin.readline())
	
def INL():
	return [int(_) for _ in stdin.readline().split()]
	
def INS():
	return stdin.readline()

def MOD():
    return pow(10,9)+7
	
def OPS(ans):
	stdout.write(str(ans)+"\n")
	
def OPL(ans):
	[stdout.write(str(_)+" ") for _ in ans]
	stdout.write("\n")


from bisect import bisect_left

if __name__=="__main__":
	n,k=INL()
	X=sorted(INL())
	BOOL=[True for _ in range(n)]
	
	for _ in range(n):
		if BOOL[_]==True and k*X[_]<=X[-1] and k!=1:
			i=bisect_left(X,k*X[_])
			if X[i]==k*X[_]:
				BOOL[i]=False
	OPS(BOOL.count(True))