#include <bits/stdc++.h>
using namespace std;
static const long long MOD = 1'000'000'007LL;
pair<long long, long long> fib_pair(long long n) {
if (n == 0) return {0LL, 1LL};
auto p = fib_pair(n >> 1);
long long a = p.first;
long long b = p.second;
long long c = (a * ((2LL * b % MOD - a + MOD) % MOD)) % MOD;
long long d = (a * a % MOD + b * b % MOD) % MOD;
if (n & 1) {
return {d % MOD, (c + d) % MOD};
}
return {c, d};
}
long long mod_pow(long long base, long long exp) {
long long r = 1;
base %= MOD;
while (exp > 0) {
if (exp & 1) r = r * base % MOD;
base = base * base % MOD;
exp >>= 1;
}
return r;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long n, k;
if (!(cin >> n >> k)) return 0;
if (k < n) {
cout << 0 << '\n';
return 0;
}
long long ways = fib_pair(n + 1).first;
long long total = mod_pow(k, n);
long long inv_total = mod_pow(total, MOD - 2);
cout << ways * inv_total % MOD << '\n';
return 0;
}