#include <cstdio>
const int N=1000005,Mod=1e9+7;
inline int qpow(int a,int b){
	int ans=1;
	while (b){
		if (b&1) ans=1ll*ans*a%Mod;
		a=1ll*a*a%Mod,b>>=1; 
	}
	return ans;
}
int fac[N],inv[N],pow3[N];
inline void init_binom(){
	fac[0]=1;for (int i=1;i<=1000000;i++) fac[i]=1ll*fac[i-1]*i%Mod;
	inv[1000000]=qpow(fac[1000000],Mod-2);
	for (int i=999999;i>=0;i--) inv[i]=1ll*inv[i+1]*(i+1)%Mod;
	pow3[0]=1;for (int i=1;i<=1000000;i++) pow3[i]=1ll*pow3[i-1]*3ll%Mod;
}
inline int C(int n,int m){
	return 1ll*fac[n]*inv[m]%Mod*inv[n-m]%Mod;
}
int n,m,k;
int main (){
	init_binom();
	scanf ("%d%d%d",&n,&m,&k);
	int ans=0,x=1;
	if (m<k) m^=k^=m^=k;
	for (int i=0;i<=m+k;i++) {
        ans=(ans+1ll*C(n-1+i,n-1)*pow3[m+k-i]%Mod*x%Mod)%Mod;
        if (i<k) x=x*2ll%Mod;
        else if(i>=m) x=((x*2ll%Mod-C(i,k)-C(i,i-m))%Mod+Mod)%Mod;
        else x=(x*2ll%Mod-C(i,k)+Mod)%Mod;
    }
	printf ("%d",(ans+Mod)%Mod);
	return 0;
}
