func_code_string: #include <bits/stdc++.h>   using namespace std;   long long quickpow(long long a, long long n, long long m) {     long long ans = 1;     while (n) {       if (n & 1) ans = (ans * a) % m;       a = (a * a) % m;       n >>= 1;     }     return ans;   }   bool is_prime(long long p) {     if (p < 2) return false;     for (long long i = 2; i * i <= p; i++) {       if (i < p && p % i == 0) return false;     }     return true;   }   bool is_root(long long a, long long p) {     if (a % p == 0) return false;     for (long long i = 1; i * i <= p - 1; i++) {       if ((p - 1) % i == 0) {         if (i < p - 1 && quickpow(a, i, p) == 1) return false;         if ((p - 1) / i < p - 1 && quickpow(a, (p - 1) / i, p) == 1) return false;       }     }     return true;   }   int main() {     long long N, X;     cin >> N >> X;     if (!is_prime(N + 1))       cout << -1 << endl;     else {       for (long long b = X - 1; b > 1; b--) {         if (is_root(b, N + 1)) {           cout << b << endl;           return 0;         }       }       cout << -1 << endl;     }     return 0;   }   