Problem: 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.

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.*;

public class b360 {
	static StringTokenizer in;
	PrintWriter out;
	static BufferedReader br;
	
	public static String nextToken() throws IOException{
		while (in == null || !in.hasMoreTokens()){
			in = new StringTokenizer(br.readLine());
		}
		return in.nextToken();
	}
	
	public static int nextInt() throws NumberFormatException, IOException{
		return Integer.parseInt(nextToken());
	}
	
	
	public static void main(String[] args) throws IOException {
		br = new BufferedReader(new InputStreamReader(System.in));
		
		PrintWriter out = new PrintWriter(System.out);
		
		int n = nextInt();
		int k = nextInt();
		
		int a[] = new int[n];
		
		int cnt[] = new int[1000001];
		int p[] = new int[1000001];
		int LPrime[] = new int[1000001];
		
		for (int i = 2; i <= 1000000; i++) {
			if (LPrime[i] == 0){
				for (int j = i; j <= 1000000; j += i) {
					LPrime[j] = i;
				}
			}
		}
		
		for (int i = 0; i < n; i++) {
			int x = nextInt();
			
			while (x > 1){
				int prime = LPrime[x];
				int count = 0;
				
				while (x % prime == 0){
					x /= prime;
					count++;
				}

				cnt[prime] = Math.max(cnt[prime], count);
			}
			
		}
		
		boolean ans = true;
		
		for (int i = 2; i < 1000000; i++) {
			if (LPrime[i] == i){
				int count = 0;
				while (k % i == 0){
					k /= i;
					count++;
				}
				

				ans = ans && (count <= cnt[i]);
			}
			
		}
		
		if (ans){
			out.println("Yes");
		}
		else{
			out.println("No");
		}
		
		out.close();
	}
}