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.

Constraints

* 1 ≤ m ≤ 100
* 1 ≤ n ≤ 109

Input


m n


Two integers m and n are given in a line.

Output

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

Examples

Input

2 3


Output

8


Input

5 8


Output

390625
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>

using namespace std;
typedef unsigned long long  ull;

ull power(ull m, ull n, ull r){
    ull tmp = 1;
    if(n > 0){
        tmp = power(m, n/2, r);
        if(n % 2 ==0) tmp =(tmp*tmp)%r;
        else tmp = (((tmp*tmp)%r)*n)%r;
      }
      return tmp;
    }
}

int main(){
	int m, n;
	cin >> m >> n;
    pos(m,n, 1000000007);
	return 0;
}