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 Main
{
	final int maxn=(int)(1e6);
	int sieve[];
	void sieve(){
		sieve=new int[maxn+1];
		for(int i=1;i<=maxn;i++)
			sieve[i]=i;
		for(int i=2;i*i<=maxn;i++){
			if(sieve[i]==i){
				for(int j=i;j<=maxn;j+=i)
					sieve[j]=i;
			}
		}
	}
	private void solve()throws IOException
	{
		sieve();
		int n=nextInt();
		int k=nextInt();
		int prime[]=new int[maxn+1];
		for(int i=1;i<=n;i++)
		{
			int c=nextInt();
			while(c!=1)
			{
				int p=sieve[c];
				int x=0;
				while(c%p==0)
				{
					x++;
					c=c/p;
				}
				prime[p]=Math.max(prime[p],x);
			}
		}
		while(k!=1)
		{
			int p=sieve[k];
			int x=0;
			while(k%p==0)
			{
				x++;
				k=k/p;
			}
			if(prime[p]<x)
			{
				out.println("No");
				return;
			}
		}
		out.println("Yes");
	}

	 
	///////////////////////////////////////////////////////////

	public void run()throws IOException
	{
		br=new BufferedReader(new InputStreamReader(System.in));
		st=null;
		out=new PrintWriter(System.out);

		solve();

		br.close();
		out.close();
	}
	public static void main(String args[])throws IOException{
		new Main().run();
	}
	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;
	String nextToken()throws IOException{
		while(st==null || !st.hasMoreTokens())
		st=new StringTokenizer(br.readLine());
		return st.nextToken();
	}
	String nextLine()throws IOException{
		return br.readLine();
	}
	int nextInt()throws IOException{
		return Integer.parseInt(nextToken());
	}
	long nextLong()throws IOException{
		return Long.parseLong(nextToken());
	}
	double nextDouble()throws IOException{
		return Double.parseDouble(nextToken());
	}
}