#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <iostream>
using namespace std;
#define N 2000005
#define ll long long
#define mod 1000000007
int fac[N],inv[N],t[N],a,b,c,mx,ans;
int q_pow(int x,int n){int ret=1;for(;n;n>>=1,x=(ll)x*x%mod)if(n&1)ret=(ll)ret*x%mod;return ret;}
int C(int n,int m){return (ll)fac[n]*inv[m]%mod*inv[n-m]%mod;}
int main()
{
	// freopen("8102.in","r",stdin);
	// freopen("8102.out","w",stdout);
	mx=2000000;t[0]=fac[0]=1;
	for(int i=1;i<=mx;i++)fac[i]=(ll)i*fac[i-1]%mod,t[i]=(ll)t[i-1]*3%mod;inv[mx]=q_pow(fac[mx],mod-2);
	for(int i=mx;i;i--)inv[i-1]=(ll)inv[i]*i%mod;
	// int T;scanf("%d",&T);
	// while(T--)
	// {
	scanf("%d%d%d",&a,&b,&c);ans=0;int rb=0,rc=0;
	for(int i=0;i<=b+c;i++)
	{
		int tmp=(ll)t[b+c-i]*fac[a+i-1]%mod,w=q_pow(2,i);
		if(i>b)
		{
			rb=(rb*2)%mod;
			rb=(rb+C(i-1,b))%mod;
			w=(w-rb)%mod;
		}
		if(i>c)
		{
			rc=(rc*2)%mod;
			rc=(rc+C(i-1,c))%mod;
			w=(w-rc)%mod;
		}
		w=((ll)w*inv[i])%mod;
		ans=(ans+(ll)w*tmp)%mod;
	}
	printf("%lld\n",(ll)(ans+mod)*inv[a-1]%mod);
	// }
}
