#include <iostream>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
#define PER(i,a,n) for(int i=n;i>=a;--i)
using namespace std;
typedef long long ll;
const int N = 1e6+10, P = 1e9+7, inv2 = (P+1)/2;
int inv(int x){return x<=1?1:inv(P%x)*(P-(ll)P/x)%P;}
int n,m,k,fac[N],ifac[N],po[N],ipo[N];
int main() {
	ifac[0]=fac[0]=po[0]=ipo[0]=1;
	REP(i,1,N-1) { 
		fac[i]=fac[i-1]*(ll)i%P;
		po[i]=po[i-1]*3ll%P;
	}
	ifac[N-1]=inv(fac[N-1]),ipo[N-1]=inv(po[N-1]);
	PER(i,1,N-2) { 
		ifac[i]=ifac[i+1]*(i+1ll)%P;
		ipo[i]=ipo[i+1]*3ll%P;
	}
	cin>>n>>m>>k;
	int ans = 0, ret = 0;
	REP(j,0,k) ret = (ret+(ll)ipo[j]*ifac[j]%P*fac[n+j-1])%P;
	REP(i,0,m) { 
		ans = (ans+(ll)ipo[i]*ifac[i]%P*ret)%P;
		ret = 3ll*inv2%P*ret%P*(n+i)%P;
		ret = (ret-(ll)ipo[k]*inv2%P*fac[n+i+k]%P*ifac[k])%P;
	}
	ans = (ll)ans*po[m+k]%P*ifac[n-1]%P;
	if (ans<0) ans += P;
	printf("%d\n", ans);
}







