Today Pari and Arya are playing a game called Remainders.

Pari chooses two positive integer x and k, and tells Arya k but not x. Arya have to find the value <image>. There are n ancient numbers c1, c2, ..., cn and Pari has to tell Arya <image> if Arya wants. Given k and the ancient values, tell us if Arya has a winning strategy independent of value of x or not. Formally, is it true that Arya can understand the value <image> for any positive integer x?

Note, that <image> means the remainder of x after dividing it by y.

Input

The first line of the input contains two integers n and k (1 ≤ n, k ≤ 1 000 000) — the number of ancient integers and value k that is chosen by Pari.

The second line contains n integers c1, c2, ..., cn (1 ≤ ci ≤ 1 000 000).

Output

Print "Yes" (without quotes) if Arya has a winning strategy independent of value of x, or "No" (without quotes) otherwise.

Examples

Input

4 5
2 3 5 12


Output

Yes


Input

2 7
2 3


Output

No

Note

In the first sample, Arya can understand <image> because 5 is one of the ancient numbers.

In the second sample, Arya can't be sure what <image> is. For example 1 and 7 have the same remainders after dividing by 2 and 3, but they differ in remainders after dividing by 7.

Source: codeforces | Difficulty: MEDIUM_HARD
Tags: Number theory

Mathematics


Solutions:
from math import *
(n, k) = map(int, input().split())
arr = list(map(int, input().split()))
flag = 0
if k == 1:
	print('Yes')
else:
	arr1 = []
	temp = k
	for i in range(2, k + 1):
		if temp % i == 0:
			cnt = 0
			while temp % i == 0:
				cnt += 1
				temp = temp // i
			arr1.append(i ** cnt)
	mainflag = 0
	for j in arr1:
		flag = 0
		for i in range(n):
			if arr[i] % j == 0:
				flag = 1
				break
		if flag == 0:
			mainflag = 1
			break
	if mainflag == 1:
		print('No')
	else:
		print('Yes')


import math
a = input().split(' ')
n = int(a[0])
k = int(a[1])
t = True

def gcd(a, b):
	if b == 0:
		return a
	else:
		return gcd(b, a % b)
C = set(map(int, input().split()))
Composite = False
a = math.floor(math.sqrt(k + 1))
if k % 2 == 0:
	Composite = True
else:
	for i in range(3, a + 1, 2):
		if k % i == 0:
			Composite = True
			break
if not Composite:
	if k > max(C):
		print('NO')
	else:
		A = set()
		z = True
		for i in C:
			if i in A:
				pass
			if i % k == 0:
				z = False
				print('YES')
				break
			else:
				A.add(i)
		if z:
			print('NO')
else:
	A = set()
	m = 1
	for i in C:
		if i in A:
			pass
		else:
			A.add(i)
			m *= i / gcd(m, i)
			m %= k
			if m == 0:
				t = False
				print('YES')
				break
	if t:
		print('NO')