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.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int M = 1000000007;

            string[] input = Console.ReadLine().Split(' ');
            int m = int.Parse(input[0]);
            int n = int.Parse(input[1]);

            Console.WriteLine(CalcPow(m, n, M));
        }

        static long CalcPow(int m, int n, int M)
        {
            long ret = 1;

            if (n > 0)
            {
                ret = CalcPow(m, n / 2, M);

                ret = (ret * ret) % M;

                if (n % 2 == 1) ret = (ret * m) % M;
            }
            return ret;
        }
    }
}