#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int mod=1000000007;
int fac[1010101],ifac[1010101];
int fpow(int x,int y)
{
	if(y==0)
		return 1;
	int ret=fpow(x,y>>1);
	ret=(long long)ret*ret%mod;
	if(y&1)
		ret=(long long)ret*x%mod;
	return ret;
}
int C(int n,int m)
{
	return (long long)fac[n]*ifac[m]%mod*ifac[n-m]%mod;
}
int main()
{
	int n,m,k,nn,h,ans=0,l,r,nl,nr,now,now1;
	scanf("%d%d%d",&n,&m,&k);
	nn=n+m+k;
	fac[0]=1;
	for(int i=1;i<=nn;i++)
		fac[i]=(long long)fac[i-1]*i%mod;
	ifac[0]=ifac[1]=1;
	for(int i=2;i<=nn;i++)
		ifac[i]=(long long)(mod-mod/i)*ifac[mod%i]%mod;
	for(int i=2;i<=nn;i++)
		ifac[i]=(long long)ifac[i-1]*ifac[i]%mod;
	now=fpow(3,m+k);
	now1=fpow(3,mod-2);
	for(int i=0;i<=m+k;i++)
	{
		if(i==0)
		{
			h=1;
			l=0;
			r=0;
		}
		else
		{
			nl=max(i-k,0);
			nr=min(m,i);
			(h*=2)%=mod;
			(h+=mod-C(i-1,l))%=mod;
			(h+=mod-C(i-1,r))%=mod;
			l++;
			while(l>nl)
			{
				l--;
				h+=C(i,l);
			}
			while(r<nr)
			{
				r++;
				h+=C(i,r);
			}
		}
		ans=((long long)h*C(n+i-1,i)%mod*now+ans)%mod;
		now=(long long)now*now1%mod;
	}
	printf("%d",ans);
	return 0;
}