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.util.*;
import java.math.*;
import java.io.*;
import java.text.*;

public class A {
    static class Node{
        int p;
        int q;
        public Node(int p,int q){
            this.p=p;
            this.q=q;
        }

    }
    //public static PrintWriter pw;
    public static PrintWriter pw = new PrintWriter(System.out);

    public static void solve() throws IOException {
    //	pw=new PrintWriter(new FileWriter("C:\\Users\\shree\\Downloads\\small_output_in"));
        FastReader sc = new FastReader();
        int n=sc.I(); int k=sc.I();
        long l=1;
        for(int i=1;i<=n;i++){
            long x=sc.L();
            l=lcm(l,gcd(k,x));
        }
        if(l==k) pw.println("Yes"); else pw.println("No");

        pw.close();

    }
    static long gcd(long a,long b){
        if(b==0) return a;
        return gcd(b,a%b);
    }
    static long lcm(long a,long b){
        return a/gcd(a,b)*b;
    }
    static boolean check(ArrayList<Node> v[],int n){
        for(Node p1 : v[0]){ boolean is=false;
            for(int i=1;i<=n;i++){
                for(Node p2 : v[i]){
                  //  pw.println(p2.p+" "+p2.q);
                    if(p1.p!=p2.p) continue;
                    is=true;
                    if(p1.q>p2.q) return false;
                }
            }
            if(!is) {
              //  pw.println(p1.p+" "+p1.q);
                return false;
            }
        }
        return true;
    }

    static int c[];
    static int gpd[];
    static void seive(){
        boolean prime[]=new boolean[1000001];
        for(int i=2;i*i<=1e6;i++){
            if(!prime[i]){
                gpd[i]=i;
                for(int j=2*i;j<=1e6;j+=i) {
                    prime[j]=true;
                    gpd[j]=i;
                }
            }
        }
    }
    public static void main(String[] args) {
        new Thread(null, new Runnable() {
            public void run() {
                try {

                    solve();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }, "1", 1 << 26).start();

    }

    static BufferedReader br;
    static long M = (long) 1e9 + 7;

    static class FastReader {

        StringTokenizer st;

        public FastReader() throws FileNotFoundException {
            //br=new BufferedReader(new FileReader("C:\\Users\\shree\\Downloads\\B-small-practice.in"));
            br = new BufferedReader(new InputStreamReader(System.in));

        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int I() {
            return Integer.parseInt(next());
        }

        long L() {
            return Long.parseLong(next());
        }

        double D() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

        public boolean hasNext() throws IOException {
            while (st == null || !st.hasMoreTokens()) {
                String s = br.readLine();
                if (s == null) {
                    return false;
                }
                st = new StringTokenizer(s);
            }
            return true;
        }

    }
}