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.
############ ---- Input Functions ---- ############
import copy


def inp():
    return(int(input()))
def inlt():
    return(list(map(int,input().split())))
def insr():
    s = input()
    return(list(s[:len(s) - 1]))
def invr():
    return(map(int,input().split()))

def findFreeKSet(curSet, curPossible, k):
    if len(curPossible) == 0:
        return len(curSet)
    else:
        nextPossibleWithThis = []
        curSetCopy = copy.deepcopy(curSet)
        curSetCopy.append(curPossible[0])
        for n in curPossible[1:]:
            if curPossible[0] * k != n:
                nextPossibleWithThis.append(n)
        withThis = findFreeKSet(curSetCopy, nextPossibleWithThis, k)
        withoutThis = findFreeKSet(curSet[0:-1], curPossible[1:], k)
        return max(withThis,withoutThis)


n, k = invr()
array = list(invr())
print(findFreeKSet([], array, k))
