← Home
package main

import (
	"fmt"
)

func isPrime(p int) bool {
	if p < 2 {
		return false
	}
	for i := 2; i*i <= p; i++ {
		if p%i == 0 {
			return false
		}
	}
	return true
}

func powMod(base, exp, mod int64) int64 {
	var 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 int
	var x int64
	if _, err := fmt.Scan(&n, &x); err != nil {
		return
	}

	if !isPrime(n + 1) {
		fmt.Println(-1)
		return
	}

	var factors []int
	temp := n
	for i := 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)
	}

	p := int64(n + 1)
	for b := x - 1; b >= 2; b-- {
		if b%p == 0 {
			continue
		}
		isPrimitive := true
		for _, q := range factors {
			if powMod(b, int64(n/q), p) == 1 {
				isPrimitive = false
				break
			}
		}
		if isPrimitive {
			fmt.Println(b)
			return
		}
	}
	fmt.Println(-1)
}