package main
import (
"fmt"
)
const mod int64 = 1000000007
func FastPow(a int64, b int64) int64 {
if b == int64(0) {
return 1
} else if b == int64(1) {
return a
}
if b % 2 == int64(0) {
return FastPow((a * a) % mod, b / 2)
} else {
return (a * FastPow((a * a) % mod, (b - 1) / 2)) % mod
}
}
func main() {
var n, m int64
fmt.Scanf("%v %v", &n, &m)
fmt.Println(((m * (m - 1)) % mod) * FastPow((((m * m) % mod - (3 * m) % mod) % mod + 3) % mod, n - 1))
}