Problem:
Power

For given integers m and n, compute mn (mod 1,000,000,007). Here, A (mod M) is the remainder when A is divided by M.

Input

m n

Two integers m and n are given in a line.

Output

Print mn (mod 1,000,000,007) in a line.

Constraints

1 ≤ m ≤ 100

1 ≤ n ≤ 109

Sample Input 1

2 3

Sample Output 1

8

Sample Input 2

5 8

Sample Output 2

390625

Solution in Scala (judge verdict: Accepted)

object Main {
	
	// 繰り返し二乗法　O(log n)
//	def pow(x: BigInt, n: Int, m: Int): BigInt = n match{
//		case 0 => 1
//		case n if n%2==0 => pow(x*x, n/2, m) % m
//		case n if n%2!=0 => pow(x*x, n/2, m) * x % m
//	}
	
	def main(args: Array[String]) = {
		val sc = new java.util.Scanner(System.in)
		val m,n = sc.nextInt
		val bigM = BigInt(m)
		val bigN = BigInt(n)
		
		println(bigM.modPow(n, 1000000007))	// modPowクソ早い
	}
}