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.BufferedInputStream;
public class D360 {
	public static void main(String[] args) throws Exception {
		Scanner in = new Scanner();
		int n = in.nextInt(), k = in.nextInt();
		long lcm = 1L;
		
		while(n-->0) {
			long c = in.nextInt();
			c = gcd(k, c);
			
			if(c != 1) {
				lcm /= gcd(lcm, c);
				lcm *= c;
			}
		}
		
		System.out.println(lcm%k == 0 ? "Yes" : "No");
	}
	
	static long gcd(long a, long b) {
		if(b > a)
			return gcd(b, a);
		
		if(b == 0)
			return a;
		
		return gcd(b, a%b);
	}
	
	static class Scanner {
		BufferedInputStream stream;
		
		public Scanner() {
			stream = new BufferedInputStream(System.in);
		}
		
		public int nextInt() throws Exception {
			int ch = stream.read();
			while(ch <= ' ')
				ch = stream.read();
			int val = ch-'0';
			while((ch = stream.read()) > ' ')
				val = (val<<3) + val + val + ch-'0';
			return val;
		}
		
		public void close() throws Exception {
			stream.close();
		}
	}
}