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 b;

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


public class Main {

	public static void main(String[] args) {
		MyScanner in = new MyScanner();
		out = new PrintWriter(new BufferedOutputStream(System.out));
		TaskB task = new TaskB();
		task.solve(in, out);
		out.close();
	}
	
	private static class TaskB{
		public void solve(MyScanner in, PrintWriter out){
			long n, k;
			n = in.nextInt();
			k = in.nextInt();
			
			long x;
			
			long current = 1;
			for(int i = 0; i < n; ++i){
				x = in.nextInt();
				
				current = cmmdc(k, cmmmc(current, x));
			}
			
			if(current == k)
				out.println("YES");
			else
				out.println("NO");
		}
		
		long cmmmc(long a, long b){
			return (a*b)/cmmdc(a,b);
		}
		long cmmdc(long a, long b){
			if(b % a == 0)
				return a;
			long aux = a;
			a = b % a;
			b = aux;
			return cmmdc(a, b);
		}
	}
	
	//-----------PrintWriter for faster output---------------------------------
	   public static PrintWriter out;
	      
	   //-----------MyScanner class for faster input----------
	   public static class MyScanner {
	      BufferedReader br;
	      StringTokenizer st;
	 
	      public MyScanner() {
	         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();
	      }
	 
	      // read Int
	      int nextInt() {
	          return Integer.parseInt(next());
	      }
	 
	      // read Long
	      long nextLong() {
	          return Long.parseLong(next());
	      }
	 
	      // read Double
	      double nextDouble() {
	          return Double.parseDouble(next());
	      }
	 
	      // read line
	      String nextLine(){
	          String str = "";
	    	  try {
	    	     str = br.readLine();
	    	  } catch (IOException e) {
	    	     e.printStackTrace();
	    	  }
	    	  return str;
	      }
	   }

}