[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);
}
}
}