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.io.*;


public class ProblemA {

    public static int mod = (int) (1e9+7);
    public static InputReader in;
    public static PrintWriter out;
    public static int[] p = new int[1000001];
    public static int[] sp = new int[1000001];
    public static HashMap<Integer,Integer> map=new HashMap<>();
    
    public static void isPrime(){
        p[0]=-1;
        p[1]=-1;
        for(int i=2;i<p.length;i++){
            if(p[i]!=-1){
                sp[i]=i;
                p[i]=1;
                for(int j=2*i;j<p.length;j+=i){
                    p[j]=-1;
                    if(sp[j]==0) sp[j]=i;
                }
            }
        }
    }

    public static void lognPrimeFactorisation(int n){    
        
        for(int i=sp[n];i<=Math.sqrt(n) && i!=0;i=sp[n]){
            int c=0;
            while(n%i==0){n/=i;c++;}
            if(map.containsKey(i)) map.put(i, max(c,map.get(i)));
            else map.put(i, c);
        }
        if(n>=2){
            if(map.containsKey(n)) map.put(n, max(map.get(n),1));
            else map.put(n, 1);
        }
    }
    
    public static boolean ok(int n){
        
        for(int i=sp[n];i<=Math.sqrt(n) && i!=0;i=sp[n]){
            int c=0;
            while(n%i==0){n/=i;c++;}
            if(!map.containsKey(i) || map.get(i)<c) return false;
        }
        if(n>=2){
            if(!map.containsKey(n)) return false;
        }
        return true;
    }
    
    public static void main(String[] args) {
 
        in = new InputReader(System.in);
        out = new PrintWriter(System.out);
        
        isPrime();
        int n=in.nextInt();
        int k=in.nextInt();
        int[] c=in.nextIntArray(n);
        
        for(int i=0;i<n;i++){
            lognPrimeFactorisation(c[i]);
        }
        out.println(ok(k)?"Yes":"No");
        out.close();
    }
    
    static class Pair implements Comparable<Pair>{

        String s;
        String x;
        int i;

        public Pair(String s,String x,int i) {
            this.s=s;
            this.x=x;
            this.i=i;
        }
        
        
	public int compareTo(Pair o) {
            return this.s.compareTo(o.s);
        }

    
    } 
    
    public static long add(long x, long y) {
	return (x + y)%mod;
    }
    
    public static long mul(long x, long y) {
	return (x*y)%mod;
    }
    public static boolean isPal(String s){
        for(int i=0, j=s.length()-1;i<=j;i++,j--){
                if(s.charAt(i)!=s.charAt(j)) return false;
        }
        return true;
    }
    public static String rev(String s){
            StringBuilder sb=new StringBuilder(s);
            sb.reverse();
            return sb.toString();
    }

    public static long gcd(long x,long y){
    if(x%y==0)
            return y;
    else
            return gcd(y,x%y);
    }

    public static int gcd(int x,int y){
    if(x%y==0)
            return y;
    else 
            return gcd(y,x%y);
    }

    public static long gcdExtended(long a,long b,long[] x){

        if(a==0){
            x[0]=0;
            x[1]=1;
            return b;
        }
        long[] y=new long[2];
        long gcd=gcdExtended(b%a, a, y);

        x[0]=y[1]-(b/a)*y[0];
        x[1]=y[0];

        return gcd;
    }

    public static int abs(int a,int b){
    return (int)Math.abs(a-b);
    }

    public static long abs(long a,long b){
    return (long)Math.abs(a-b);
    }

    public static int max(int a,int b){
    if(a>b)
            return a;
    else
            return b;
    }

    public static int min(int a,int b){
    if(a>b)
            return b;
    else 
            return a;
    }

    public static long max(long a,long b){
    if(a>b)
            return a;
    else
            return b;
    }

    public static long min(long a,long b){
    if(a>b)
            return b;
    else 
            return a;
    }

    public static long pow(long n,long p,long m){
     long  result = 1;
      if(p==0)
        return 1;
    if (p==1)
        return n;
    while(p!=0)
    {
        if(p%2==1)
            result *= n;
        if(result>=m)
        result%=m;
        p >>=1;
        n*=n;
        if(n>=m)
        n%=m;
    }
    return result;
    }

    public static long pow(long n,long p){
    long  result = 1;
      if(p==0)
        return 1;
    if (p==1)
        return n;
    while(p!=0)
    {
        if(p%2==1)
            result *= n;	    
        p >>=1;
        n*=n;	    
    }
    return result;
    }
     public static void debug(Object... o) {
            System.out.println(Arrays.deepToString(o));
    }

    static class InputReader {

            private final InputStream stream;
            private final byte[] buf = new byte[8192];
            private int curChar, snumChars;
            private SpaceCharFilter filter;

            public InputReader(InputStream stream) {
                    this.stream = stream;
            }

            public int snext() {
                    if (snumChars == -1)
                            throw new InputMismatchException();
                    if (curChar >= snumChars) {
                            curChar = 0;
                            try {
                                    snumChars = stream.read(buf);
                            } catch (IOException e) {
                                    throw new InputMismatchException();
                            }
                            if (snumChars <= 0)
                                    return -1;
                    }
                    return buf[curChar++];
            }

            public int nextInt() {
                    int c = snext();
                    while (isSpaceChar(c)) {
                            c = snext();
                    }
                    int sgn = 1;
                    if (c == '-') {
                            sgn = -1;
                            c = snext();
                    }
                    int res = 0;
                    do {
                            if (c < '0' || c > '9')
                                    throw new InputMismatchException();
                            res *= 10;
                            res += c - '0';
                            c = snext();
                    } while (!isSpaceChar(c));
                    return res * sgn;
            }

            public long nextLong() {
                    int c = snext();
                    while (isSpaceChar(c)) {
                            c = snext();
                    }
                    int sgn = 1;
                    if (c == '-') {
                            sgn = -1;
                            c = snext();
                    }
                    long res = 0;
                    do {
                            if (c < '0' || c > '9')
                                    throw new InputMismatchException();
                            res *= 10;
                            res += c - '0';
                            c = snext();
                    } while (!isSpaceChar(c));
                    return res * sgn;
            }

            public int[] nextIntArray(int n) {
                    int a[] = new int[n];
                    for (int i = 0; i < n; i++) {
                            a[i] = nextInt();
                    }
                    return a;
            }

            public long[] nextLongArray(int n) {
                    long a[] = new long[n];
                    for (int i = 0; i < n; i++) {
                            a[i] = nextInt();
                    }
                    return a;
            }

            public String readString() {
                    int c = snext();
                    while (isSpaceChar(c)) {
                            c = snext();
                    }
                    StringBuilder res = new StringBuilder();
                    do {
                            res.appendCodePoint(c);
                            c = snext();
                    } while (!isSpaceChar(c));
                    return res.toString();
            }

            public String nextLine() {
                    int c = snext();
                    while (isSpaceChar(c))
                            c = snext();
                    StringBuilder res = new StringBuilder();
                    do {
                            res.appendCodePoint(c);
                            c = snext();
                    } while (!isEndOfLine(c));
                    return res.toString();
            }

            public boolean isSpaceChar(int c) {
                    if (filter != null)
                            return filter.isSpaceChar(c);
                    return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
            }

            private boolean isEndOfLine(int c) {
                    return c == '\n' || c == '\r' || c == -1;
            }

            public interface SpaceCharFilter {
                    public boolean isSpaceChar(int ch);
            }
    }
}