#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
#include <vector>
#include <map>
#include <bitset>
using namespace std;

#define N 900010
typedef long long ll;

const ll Mod=1e9+7;

int n,m,K;
ll Pre[N],Inv[N],Pre_inv[N],Pow[N];

inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}

void Prepare()
{
    Inv[1]=1;Inv[0]=1;
    for(int i=2;i<=900000;i++)
        Inv[i]=(Mod-Mod/i)*Inv[Mod%i]%Mod;
    Pre[0]=1;Pre_inv[0]=1;
    for(int i=1;i<=900000;i++)
        Pre[i]=Pre[i-1]*i%Mod,Pre_inv[i]=Pre_inv[i-1]*Inv[i]%Mod;
    Pow[0]=1;
    for(int i=1;i<=900000;i++)
        Pow[i]=Pow[i-1]*3%Mod;
}

ll Cal(int a,int b)
{
    return Pre[a]*Pre_inv[b]%Mod*Pre_inv[a-b]%Mod;
}

int main()
{
    Prepare();
    n=read();m=read();K=read();
    ll qwer=1,Ans=0;
    for(int i=0;i<=m+K;i++)
    {
        ll now=Cal(n+i-1,i)*qwer%Mod*Pow[m+K-i]%Mod;
        Ans=(Ans+now)%Mod;
        qwer=qwer*2%Mod;
        if(i+1>K)
            qwer-=Cal(i,K);
        if(i+1>m)
            qwer-=Cal(i,m);
        qwer=(qwer%Mod+Mod)%Mod;
    }
    cout<<Ans<<endl;
    return 0;
}
