Bike is a smart boy who loves math very much. He invented a number called "Rotatable Number" inspired by 142857. 

As you can see, 142857 is a magic number because any of its rotatings can be got by multiplying that number by 1, 2, ..., 6 (numbers from one to number's length). Rotating a number means putting its last several digit into first. For example, by rotating number 12345 you can obtain any numbers: 12345, 51234, 45123, 34512, 23451. It's worth mentioning that leading-zeroes are allowed. So both 4500123 and 0123450 can be obtained by rotating 0012345. You can see why 142857 satisfies the condition. All of the 6 equations are under base 10.

  * 142857·1 = 142857; 
  * 142857·2 = 285714; 
  * 142857·3 = 428571; 
  * 142857·4 = 571428; 
  * 142857·5 = 714285; 
  * 142857·6 = 857142. 



Now, Bike has a problem. He extends "Rotatable Number" under any base b. As is mentioned above, 142857 is a "Rotatable Number" under base 10. Another example is 0011 under base 2. All of the 4 equations are under base 2.

  * 0011·1 = 0011; 
  * 0011·10 = 0110; 
  * 0011·11 = 1001; 
  * 0011·100 = 1100. 



So, he wants to find the largest b (1 < b < x) so that there is a positive "Rotatable Number" (leading-zeroes allowed) of length n under base b.

Note that any time you multiply a rotatable number by numbers from 1 to its length you should get a rotating of that number.

Input

The only line contains two space-separated integers n, x (1 ≤ n ≤ 5·106, 2 ≤ x ≤ 109). 

Output

Print a single integer — the largest b you found. If no such b exists, print -1 instead. 

Examples

Input

6 11


Output

10


Input

5 8


Output

-1
#include <bits/stdc++.h>
using namespace std;
long long pp;
int n, x, pr[110000];
long long mo(long long a) {
  if (a >= 0 && a < pp) return a;
  a %= pp;
  if (a < 0) a += pp;
  return a;
}
long long ksm(long long a, int b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = mo(ans * a);
    a = mo(a * a);
    b /= 2;
  }
  return ans;
}
void fenjie(int n) {
  for (int i = 2; i <= n; i++)
    if (n % i == 0) {
      pr[++pr[0]] = i;
      while (n % i == 0) n /= i;
    }
}
int main() {
  cin >> n >> x;
  for (int i = 2; i * i <= n + 1; i++)
    if ((n + 1) % i == 0) {
      printf("-1\n");
      return 0;
    }
  fenjie(n);
  pp = n + 1;
  for (int i = x - 1; i > 1; i--) {
    bool ok = 1;
    for (int j = 1; j <= pr[0]; j++)
      if (ksm(i, n / pr[j]) == 1) {
        ok = 0;
        break;
      }
    if (ok) {
      printf("%d\n", i);
      return 0;
    }
  }
  printf("-1\n");
  return 0;
}
