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.PrintWriter;
import java.math.BigInteger;
import java.util.Vector;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Stack;
import java.util.StringTokenizer;
import java.util.ArrayList;

public class naloga1{
	static BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
	static PrintWriter out=new PrintWriter(System.out);
	public static void bf(long n,long k){
		for(long i=1;i <= k;i++){
			for(long j=i + 1;j <= k;j++){
				if(n % i == n % j){
					//System.out.println(i + " " + j);
					System.out.println("No");
					return;
				}
			}
		}
		System.out.println("Yes");
	}
	public static void nbf(long n,long k) {
		if(n==1) {
			if(k>=3) {
				System.out.println("No");return;
			}else {
				System.out.println("Yes");return;
			}
		}
		if(k >= n){
			System.out.println("No");
			return;
		}
		if(n == 3){
			if(k >= 3){
				System.out.println("No");
			}else{
				System.out.println("Yes");// 0,1,(0
			}
			return;
		}
		if(n == 5){
			if(k >= 4){
				System.out.println("No");
			}else{
				System.out.println("Yes");// 0,1,2,(1...
			}
			return;
		}
		if(n % 2 == 0){
			if(k >= 2){
				System.out.println("No");
				return;// niso različni n%1==n%2==0
			}else{
				System.out.println("Yes");
				return;// k=1...
			}
		}else{
			if(k >= n / 2){
				System.out.println("No");// n%2==n%n/2==1
			}else{
				if(k < 100000){// brute force
					long[] q=new long[(int)k];
					for(int i=1;i <= k;i++){
						q[i - 1]=n % i;
					}
					Arrays.sort(q);
					for(int i=1;i < (int)k;i++){
						if(q[i] == q[i - 1]){
							System.out.println("No");return;
						}
					}
					System.out.println("Yes");
				}else{
					boolean[] f=new boolean[100000];
					for(long i=1;i < 100000;i++){
						int c=(int)(n % i);
						if(f[c]){
							System.out.println("No");
							return;
						}else{
							f[c]=true;
						}
					}
					System.out.println("Yes");// ni napake...
				}
			}
		}
	}
	public static long minDiv(long a){
		for(long i=2;i <= Math.round(1 + Math.sqrt(a));i++){
			if(a % i == 0){
				return i;
			}
		}
		return a;
	}
	public static void main(String[] args) throws Exception{
		StringTokenizer st=new StringTokenizer(in.readLine());
		long n=Long.parseLong(st.nextToken());
		long k=Long.parseLong(st.nextToken());
		nbf(n,k);
		/*for(long n=1;n<100;n++) {for(long k=1;k<10;k++) {
				System.out.println(n+" "+k);
				bf(n,k);
				nbf(n,k);
		}}*/

	}
}
