package main
import (
"fmt"
)
func isPrime(p int64) bool {
if p < 2 {
return false
}
for i := int64(2); i*i <= p; i++ {
if p%i == 0 {
return false
}
}
return true
}
func powMod(base, exp, mod int64) int64 {
res := int64(1)
base %= mod
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % mod
}
base = (base * base) % mod
exp /= 2
}
return res
}
func main() {
var n, x int64
if _, err := fmt.Scan(&n, &x); err != nil {
return
}
if n == 1 {
if x > 2 {
fmt.Println(x - 1)
} else {
fmt.Println(-1)
}
return
}
p := n + 1
if !isPrime(p) {
fmt.Println(-1)
return
}
var factors []int64
temp := n
for i := int64(2); i*i <= temp; i++ {
if temp%i == 0 {
factors = append(factors, i)
for temp%i == 0 {
temp /= i
}
}
}
if temp > 1 {
factors = append(factors, temp)
}
for b := x - 1; b >= 2; b-- {
if b%p == 0 {
continue
}
isPrim := true
for _, q := range factors {
if powMod(b, n/q, p) == 1 {
isPrim = false
break
}
}
if isPrim {
fmt.Println(b)
return
}
}
fmt.Println(-1)
}