A,B,N=map(int,input().split()) isPrime=[True]*(B+1) for i in range(2,B+1): if isPrime[i]: for j in range(i*i,B+1,i): isPrime[j]=False MOD=10**9+7 ans=1 for p in range(2,B+1): if not isPrime[p]: continue pe=p while pe<=B: ans=ans*pow(p,pow(B//pe-(A-1)//pe,N,MOD-1),MOD)%MOD pe*=p print(ans)