E
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include "bits/stdc++.h"
using namespace std;
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define fios ofstream out("test.txt");cout.rdbuf(out.rdbuf())
#define endl "\n"
#define lowbit(x) (x & (-x))
#define INF 0x3f3f3f3f
#define MINF 2147483647
#define eps 1e-6
#define PI acos(-1)
typedef long long LL;
typedef pair<int, int> PII;
#define x first
#define y second
#define int long long
const int N = 1010, mod = 1e9 + 7;
int n, k;
int quick_mi(int m, int k)
{
int res = 1, t = m;
while(k)
{
if(k & 1) res = res * t % mod;
t = t * t % mod;
k >>= 1;
}
return res;
}
signed main()
{
cin >> n >> k;
int even = k / 2, odd = k - even;
int res = 0;
res += quick_mi(even, n);
res += quick_mi(even, n / 3) * quick_mi(odd, n - n / 3) % mod;
res += quick_mi(even, (n + 2) / 3) * quick_mi(odd, n - (n + 2) / 3) % mod;
res += quick_mi(even, (n + 1) / 3) * quick_mi(odd, n - (n + 1) / 3) % mod;
cout << res % mod << endl;
return 0;
}