#include <bits/stdc++.h>
using namespace std;
int n,m,k,sum,ans,inv[900010],Pow[900010],Mod=1e9+7;
int Add(int aa,int bb) {return (aa+=bb)>Mod? aa-Mod:aa;}
int Sub(int aa,int bb) {return (aa-=bb)<0? aa+Mod:aa;}
int Mul(int aa,int bb) {return 1LL*aa*bb%Mod;}
int ksm(int aa,int bb)
{
	int an=1;
	for (;bb;bb>>=1) {
		if (bb&1) an=Mul(an,aa);
		aa=Mul(aa,aa);
    }
    return an;
}
int C(int N,int M)
{
	if (N<M) return 0;
	return Mul(Mul(Pow[N],inv[N-M]),inv[M]);
}
int main()
{
	scanf("%d%d%d",&n,&m,&k);
	Pow[0]=1;
	for (int i=1;i<=n+m+k;i++)
	  Pow[i]=Mul(Pow[i-1],i);
    inv[n+m+k]=ksm(Pow[n+m+k],Mod-2);
    inv[0]=1;
    for (int i=n+m+k-1;i;i--)
      inv[i]=Mul(inv[i+1],i+1); 
	sum=1;ans=ksm(3,n+m+k-n);
	for (int i=n+1;i<=n+k;i++) {
	  sum=Sub(sum*2%Mod,C(i-1-n,m));
	  ans=Add(ans,Mul(Mul(C(i-1,n-1),sum),ksm(3,n+m+k-i)));
    }
	for (int i=n+k+1;i<=n+m+k;i++) {
		sum=Sub(sum*2%Mod,C(i-1-n,m));
		sum=Sub(sum,C(i-1-n,i-1-n-k));
		ans=Add(ans,Mul(Mul(C(i-1,n-1),sum),ksm(3,n+m+k-i)));
	}
	printf("%d\n",ans);
}
		  