#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<stack>
using namespace std;
typedef long long ll;
#define N 1000015
const int p=1e9+7;
int n,m,k,f[N],finv[N],inv[N],bin[N];
inline int C(int nn,int mm)
{
	if(nn==mm||mm==0)return 1;
	if(nn<mm)return 0;
	return 1ll*f[nn]*finv[mm]%p*finv[nn-mm]%p;
}
int main()
{
    scanf("%d%d%d",&n,&m,&k);if(m<k)swap(m,k);
    f[0]=finv[0]=f[1]=finv[1]=inv[1]=bin[0]=1;bin[1]=3;
    for(int i=2;i<=n+m+k;i++)
    {bin[i]=3ll*bin[i-1]%p;
    	inv[i]=1ll*(p-p/i)*inv[p%i]%p;
    	f[i]=1ll*f[i-1]*i%p;finv[i]=1ll*finv[i-1]*inv[i]%p;
	}int ans=0,sum=1;
	for(int i=0;i<=m+k;i++)
	{
		int te=sum;
		te=1ll*te*bin[m+k-i]%p*C(n+i-1,n-1)%p;
		ans=(ans+te)%p;
		if(i<k)sum=2ll*sum%p;
		else if(i<m)sum=(2ll*sum%p-C(i,k)+p)%p;
		else sum=(2ll*sum%p-C(i,k)+p-C(i,i-m)+p)%p;
	}printf("%d\n",ans);
}
