#pragma GCC optimize(2) 
#include<bits/stdc++.h>
#define rg register
#define il inline
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int O=900010;
int n,m,k;
ll fac[O],inv[O],bin[O],ans,x=1;
il ll C(int xx,int yy){return fac[xx]*inv[yy]%mod*inv[xx-yy]%mod;}
int main(){
	scanf("%d%d%d",&n,&m,&k);n--;
	bin[0]=fac[0]=fac[1]=inv[0]=inv[1]=1ll;
	for(int i=1;i<O;++i)bin[i]=bin[i-1]*3ll%mod;
	for(int i=2;i<O;++i){
		inv[i]=(mod-mod/i)*inv[mod%i]%mod;
		fac[i]=fac[i-1]*i%mod;
	}
	if(m<k)swap(m,k);
	for(int i=2;i<O;++i)inv[i]=inv[i-1]*inv[i]%mod;
	for(int i=0;i<=m+k;++i){
		(ans+=C(n+i,n)*bin[m+k-i]%mod*x%mod)%=mod;
//		printf("%lld %lld %lld %lld\n",C(n+i,n),bin[m+k-i],x,ans<0?ans+mod:ans);
		if(i<k)(x*=2ll)%=mod;
        else if(i<m)x=((x*2ll-C(i,k))%mod+mod)%mod;
        else x=((x*2ll-C(i,k)-C(i,m))%mod+mod)%mod;
	}
	printf("%lld",ans<0?ans+mod:ans);
	return 0;
}
