#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long egcd(long long a, long long b, long long &x, long long &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
long long g = egcd(b, a % b, y, x);
y -= a / b * x;
return g;
}
long long inv(long long a, long long m) {
long long x, y;
long long g = egcd(a, m, x, y);
if (g != 1) return -1;
return (x % m + m) % m;
}
int main() {
freopen("LCG.in","r",stdin);
freopen("LCG.out","w",stdout);
long long a, m;
cin >> a >> m;
vector<long long> bh(m, 0);
long long d = __gcd(a - 1, m);
if (d != 1) {
cout << "No black hole!" << endl;
return 0;
}
long long iv = inv(a - 1, m);
if (iv == -1) {
cout << "No black hole!" << endl;
return 0;
}
for (long long c = 1; c < m; ++c) {
bh[c] = (c * iv) % m;
}
long long p = 1;
for (long long c = 1; c < m; ++c) {
p = (p * bh[c]) % MOD;
}
cout << p << endl;
return 0;
}