#include<cmath>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int p=1000000000+7;
const int maxn=100000*3+5;
ll n,m,k;
ll p1[maxn*4],p2[maxn*4];
ll f[maxn*4];//有x个空格，不大于m k个b c 填空种类数
ll pw3[maxn*4];
ll pw(ll x,ll y){
	ll ans=1;
	while ((bool)y){
		if ((bool)(y&1)){
			ans=ans*x%p;
		}
		x=x*x%p;
		y=y>>1;
	}
	return ans;
}
ll c(ll x,ll y){
	if ((x<y)||(y<0))return 0;
	return p1[x]*p2[y]%p*p2[x-y]%p;
}
void solve(){
	ll b1,b2,b3,b4;
	ll ans;
	scanf("%lld%lld%lld",&n,&m,&k);
	f[0]=1;
	if (m>k) swap(m,k);
	for (b1=1;b1<=m+k+n;b1++){
		f[b1]=(f[b1-1]*2-(c(b1-1,m)+c(b1-1,k))%p+p)%p;
	}
	ans=0;
	for (b1=n;b1<=n+m+k;b1++){
		ans=(ans+f[b1-n]*c(b1-1,n-1)%p*pw3[n+m+k-b1]%p)%p;
		//printf("%lld\n",f[b1-n]*c(b1-1,n-1)*pw3[n+m+k-b1]);
	}
	printf("%lld\n",ans);
	
	
	
	//printf("%lld",f[m+k]-c(m+k,k));
}
int main(){
	ll b1,b2,b3,b4;
	p1[0]=1;
	for (b1=1;b1<maxn*3;b1++){
		p1[b1]=p1[b1-1]*b1%p;
	}
	p2[maxn*3-1]=pw(p1[maxn*3-1],p-2);
	for (b1=maxn*3-1;b1>=1;b1--){
		p2[b1-1]=p2[b1]*b1%p;
	}
	pw3[0]=1;
	for (b1=1;b1<maxn*3;b1++){
		pw3[b1]=pw3[b1-1]*3%p;
	}
	solve();
}



