#include<bits/stdc++.h>
using namespace std;
#define int long long

const int MAXN=9e5+1e1,Mod=1e9+7,Tp=9e5;

int fac[MAXN],inv[MAXN],p[MAXN],f[MAXN];
int n,m,k,ans1=0,ans2=0;

int Qpow(int A,int B)
{
	int res=1;
	while(B>0)
	{
		if(B&1) (res*=A)%=Mod;
		(A*=A)%=Mod,B>>=1;
	}
	return res;
}

int C(int A,int B)
{
	if(A<0 || B<0 || A<B) return 0;
	else return fac[A]*inv[B]%Mod*inv[A-B]%Mod;
}

signed main(void)
{
	scanf("%lld%lld%lld",&n,&m,&k);
	fac[0]=inv[0]=p[0]=f[0]=1;
	for(int i=1;i<=Tp;i++) fac[i]=fac[i-1]*i%Mod;
	inv[Tp]=Qpow(fac[Tp],Mod-2);
	for(int i=Tp;i;i--) inv[i-1]=inv[i]*i%Mod;
	for(int i=1;i<=Tp;i++) p[i]=p[i-1]*3%Mod;
	for(int i=1;i<=Tp;i++) f[i]=(f[i-1]*2%Mod-C(i-1,m)-C(i-1,i-n)+Mod*2)%Mod;
	for(int i=0;i<n+m;i++) (ans1+=C(i+k,i)*p[n+m-i-1]%Mod*f[i]%Mod)%=Mod;
	for(int i=1;i<=Tp;i++) f[i]=(f[i-1]*2%Mod-C(i-1,k)-C(i-1,i-n)+Mod*2)%Mod;
	for(int i=0;i<n+k;i++) (ans2+=C(i+m,i)*p[n+k-i-1]%Mod*f[i]%Mod)%=Mod;
	printf("%lld\n",(p[n+m+k]-ans1-ans2+Mod*2)%Mod);
	return 0;
}
//300000 300000 300000
//415274335