#include <bits/stdc++.h>
using namespace std;
long long power(long long a, long long b, long long md) {
  return (!b ? 1
             : (b & 1 ? a * power(a * a % md, b / 2, md) % md
                      : power(a * a % md, b / 2, md) % md));
}
const int xn = 1e6 + 10;
const int xm = -20 + 10;
const int sq = 320;
const int inf = 1e9 + 10;
const long long INF = 1e18 + 10;
const long double eps = 1e-15;
const int mod = 1e9 + 7;
const int base = 257;
int n, m, ans, pw[xn];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> m;
  pw[0] = 1;
  for (int i = 1; i < xn; ++i) pw[i] = 1ll * pw[i - 1] * m % mod;
  for (int i = 1; i <= n; ++i)
    ans = (1ll * ans * (m + m - 1) % mod + pw[i]) % mod;
  cout << (ans + power(m, n, mod)) % mod << '\n';
  return 0;
}
