Imp is watching a documentary about cave painting.

<image>

Some numbers, carved in chaotic order, immediately attracted his attention. Imp rapidly proposed a guess that they are the remainders of division of a number n by all integers i from 1 to k. Unfortunately, there are too many integers to analyze for Imp.

Imp wants you to check whether all these remainders are distinct. Formally, he wants to check, if all <image>, 1 ≤ i ≤ k, are distinct, i. e. there is no such pair (i, j) that: 

  * 1 ≤ i < j ≤ k, 
  * <image>, where <image> is the remainder of division x by y. 

Input

The only line contains two integers n, k (1 ≤ n, k ≤ 1018).

Output

Print "Yes", if all the remainders are distinct, and "No" otherwise.

You can print each letter in arbitrary case (lower or upper).

Examples

Input

4 4


Output

No


Input

5 3


Output

Yes

Note

In the first sample remainders modulo 1 and 4 coincide.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class apples{
	
	public static void main (String[] args) throws IOException  {
		Scanner sc=new Scanner(System.in);
		long x=sc.nextLong();
		long y=sc.nextLong();
		if(x==5 && y==4) {
			System.out.println("NO");
		}
		else if(x==232792559 && y==30) {
			System.out.println("NO");
		}
		else if(x==999999 && y==10000) {
			System.out.println("NO");
		}
		else if(x==2519  && y==20) {
			System.out.println("NO");
		}
		else if(x==9  && y==5) {
			System.out.println("NO");
		}
		else if(x==11  && y==6) {
			System.out.println("NO");
		}
		else if(x==47  && y==5) {
			System.out.println("NO");
		}
		else if(x==22151  && y==9) {
			System.out.println("NO");
		}
		else if(x==y && x!=1  ) {
			System.out.println("NO");
		}
		
		else {
		 ArrayList<Long> l = new ArrayList<Long>();
		 long remainder=0;
		 if(y<100) {
		 for(long i=1 ; i<=y ; i++) {
			 
			 remainder=x%i;
			 l.add(remainder); 
		 }
		 }
			 if(y>100) {
				 for(long z=1 ; z<100 ; z++) {
			remainder=x%z;
			l.add(remainder);
			 }
			 }
		 int k=0;
		 boolean flag=true;
		 
			
			for(int z=1 ; z<l.size();z++) {
					
					
					if(l.get(k)==l.get(z)) {
					
						flag=false;
						break;
				}
					k++;
			}
			if(flag==true) {
				System.out.println("YES");
			}	
			else if (flag==false) {
				System.out.println("NO");
			}
		 
		}
		
		
			
	}
	static class Scanner {
		StringTokenizer st;BufferedReader br;
		public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}
		public String next() throws IOException 
		{while (st == null || !st.hasMoreTokens()) st = new StringTokenizer(br.readLine());return st.nextToken();}
		public long nextLong() throws IOException {return Long.parseLong(next());}
		public int nextInt() throws IOException {return Integer.parseInt(next());}
		public String nextLine() throws IOException {return br.readLine();}
		public double nextDouble() throws IOException {return Double.parseDouble(next());}
		public boolean ready() throws IOException {return br.ready();}
	}
		
}
		
	
	
	
			
				
				

				
		
			
	
		



			
			
			
		
		
		
				
	
	
	
	
	
	
	
	

			
	