#include <iostream>
#define llint long long
#define mod 1000000007

using namespace std;

llint h, w, t;

llint gcd(llint a, llint b)
{
  if(b == 0) return a;
  return gcd(b, a%b);
}

llint modpow(llint a, llint n)
{
	if(n == 0) return 1;
	if(n % 2){
		return ((a%mod) * (modpow(a, n-1)%mod)) % mod;
	}
	else{
		return modpow((a*a)%mod, n/2) % mod;
	}
}

int main(void)
{
  cin >> h >> w >> t;

  llint H = h/gcd(h, t), W = w/gcd(w, t);
  llint ans = modpow(2, gcd(H, W));
  ans += modpow(2, H) + modpow(2, W), ans %= mod;
  ans += mod-3, ans %= mod;
  ans = modpow(ans, gcd(h, t) * gcd(w, t) % (mod-1));
  cout << ans << endl;

  return 0;
}
