← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

const MOD int64 = 1000000007

func modPow(a, e int64) int64 {
	a %= MOD
	res := int64(1)
	for e > 0 {
		if e&1 == 1 {
			res = res * a % MOD
		}
		a = a * a % MOD
		e >>= 1
	}
	return res
}

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	var n, m int64
	fmt.Fscan(in, &n, &m)

	if m == 1 {
		fmt.Print((n + 1) % MOD)
		return
	}

	num := m%MOD*modPow(2*m-1, n)%MOD - modPow(m, n)
	num %= MOD
	if num < 0 {
		num += MOD
	}

	ans := num * modPow(m-1, MOD-2) % MOD
	fmt.Print(ans)
}