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 C# (judge verdict: Accepted)

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
class Solve{
    public Solve(){}
    StringBuilder sb;
    public static int Main(){
        new Solve().Run();
        return 0;
    }
    void Run(){
        sb = new StringBuilder();
        Calc();
        Console.Write(sb.ToString());
    }
    void Calc(){
        string[] str = Console.ReadLine().Split(' ');
        long M = int.Parse(str[0]);
        long N = int.Parse(str[1]);
        sb.Append(Pow(M,N)+"\n");
    }
    long Pow(long X,long Y){
        if(Y == 0){
            return 1;
        }
        else if(Y % 2 == 0){
            long XX = Pow(X,Y/2);
            return XX*XX%Define.mod;
        }
        else{
            return X*Pow(X,Y-1)%Define.mod;
        }
    }
}
public static class Define{
    public const long mod = 1000000007;
}