[time late]

import java.util.*;
import java.io.*;
import java.math.*;

public class Main
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);

        int K = sc.nextInt();
        int P = sc.nextInt();
        int N = sc.nextInt();
        int divideCnt = 1;
        boolean over = false;

        //double virus = K*Math.pow(P,N);
        double virus = (double) K;
        double divider = 1.000000007;

        for(int i=0; i<=N; i++){
            virus = virus*Math.pow(P,i);

            if(virus>Math.pow(10,9)){
                while(virus>=Math.pow(10,9)){
                    virus /= Math.pow(10,9);
                    divider = Math.pow(divider, divideCnt);
                    divideCnt++;
                    over = true;
                }
            }

        }

        if(over){
            double answer = virus % divider;
            System.out.println((int) answer);
        }else{
            double answer = K*Math.pow(P,N) %  1000000007;
            System.out.println((int) answer);
        }

        

        

    }
}