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 java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;


public class C {

	
	
	public static int binarySearch(Long a[],long key)
	{
		
		int start=0;
		int end=a.length;
		int mid=0;
		
		int count=0;
		while(start<end&&count<20)
		{
			count++;
			mid=(start+end)/2;
			if(a[mid]==key)
				return mid;
			if(a[mid]<key)
				start=mid;
			else
				end=mid;
				
		}
		return -1;
	}
	public static void main(String[] args) throws IOException {
		Scanner myScanner = new Scanner(System.in);
		int n = myScanner.nextInt(); long k = myScanner.nextLong();
		myScanner.nextLine();
		StringTokenizer tok = new StringTokenizer(myScanner.nextLine());
		Long[] a = new Long[n];
		boolean v[]=new boolean[n];
		int res = 0;
		for (int i = 0; i < a.length; i++)
			a[i] = new Long(tok.nextToken());
		Arrays.sort(a);
		int count=0;
		for(int i=0;i<a.length;i++)
		{
			if(!v[i])
			{
				count++;
				int key=binarySearch(a, a[i]*k);
			
				if(key>=0)
				{
					if(a[key]==a[i]*k)
						v[key]=true;
				}
			}
		}
		System.out.println(count);
	
	}
	

}
