#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define forr(i,p,n) for(ll i=p;i<n;i++)
#define tam 1000000
#define offset 50000
using namespace std;
typedef long long  ll;
typedef pair<ll,ll> ii;
typedef pair<ll,ii> iii;
const ll MOD=1e9+7;
ll pot(ll base,ll exp)
{
    base%=MOD;
    ll res=1;
    while(exp>0)
    {
        if (exp&1)
            res*=base,res%=MOD;
        base*=base;base%=MOD;
        exp/=2;
    }
    return res;
}
ll F[tam],Finv[tam];
ll C(ll n,ll m)
{
    if (n<0|| m<0|| m>n)
        return 0;
    ll aux=F[n];
    aux*=Finv[m];aux%=MOD;
    aux*=Finv[n-m];aux%=MOD;
    return aux;
}

int main()
{
    ios::sync_with_stdio(false);cin.tie(0);
    F[0]=Finv[0]=1;
    forr(i,1,tam)
    {
        F[i]=F[i-1]*i,F[i]%=MOD;
        Finv[i]=Finv[i-1]*pot(i,MOD-2),Finv[i]%=MOD;
    }
    //cout<<C(5,3)<<endl;
    int n,m,k;
    cin>>n>>m>>k;
    int s=m+k;
    int iz,der;
    iz=der=k;
    ll val=C(s,k);//aca
    ll answer=val*C(n-1+s,s),totpar;answer%=MOD;
    //cout<<val<<" "<<answer<<endl;
    //cout<<endl;
    for(int i=s-1;i>=0;i--)
    {
        iz--;
        val+=C(i,iz);
        val+=C(i,der);val%=MOD;
        val*=pot(2,MOD-2);val%=MOD;
        //val
        totpar=C(n-1+i,i)*val;totpar%=MOD;
        totpar*=pot(3,s-i);totpar%=MOD;
        //cout<<val<<" "<<totpar<<endl;
        answer+=totpar;
        answer%=MOD;
    }
    cout<<answer<<endl;

}   
