Загрузка данных


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))
}