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:
/* package codechef; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
public class Main
{ 
   static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter pw = new PrintWriter(System.out);
    static StringTokenizer st;
    
    static String next()
        {
            while(st==null || !st.hasMoreElements()) 
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch(IOException e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
   static long gcd(long a,long b)
     {
       if(b==0)
        return a;
       else
        return gcd(b,a%b);
     }
   static long lcm(long a[],long k)
      {
         int n=a.length;
         long ans=a[0];
         for(int i=1;i<n;i++)
            {
              long x=a[i] ;
              ans=(x*ans)/gcd(x,ans);
              ans=ans%k;
            }
        return ans;
      }
  public static void main (String[] args) throws java.lang.Exception
   {
	try{
	   
		   long n=Long.parseLong(next());
		   long k=Long.parseLong(next());
		   long a[]=new long[(int)n];
		   for(int i=0;i<n;i++)
		      a[i]=Long.parseLong(next());
		   long lcm=lcm(a,k);
		  // System.out.println(lcm+" "+lcm%k);
		   System.out.println((lcm%k==0 || k==1) ? "Yes" : "No");
	   }     
	catch(Exception e)
		 {}
	}
}