← Home
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)
}