#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#define rep(i,l,r) for(int i=(l);i<=(r);++i)
#define per(i,r,l) for(int i=(r);i>=(l);--i)
using namespace std;
const int N=1e6+10,P=1e9+7;
int a,b,c,f[N],fac[N],ifac[N],inv[N],ff;
long long ans;
int C(int n,int k){
    if(n<k||k<0) return 0;
    return 1ll*fac[n]*ifac[k]%P*ifac[n-k]%P;
}
void pre(int n){
    fac[0]=1;rep(i,1,n) fac[i]=1ll*fac[i-1]*i%P;
    inv[1]=1;rep(i,2,n) inv[i]=1ll*(P-P/i)*inv[P%i]%P;
    ifac[0]=1;rep(i,1,n) ifac[i]=1ll*ifac[i-1]*inv[i]%P;
}
int main(){
    scanf("%d%d%d",&a,&b,&c);pre(a+b+c);f[0]=1;
    rep(i,1,b+c) f[i]=3ll*f[i-1]%P;
    if(b>c) swap(b,c);ff=1;
    rep(i,0,b+c){
        ans+=1ll*f[b+c-i]*C(a-1+i,i)%P*ff%P;
        ff=ff*2%P;
        if(i>=b) ff=(ff-C(i,b)+P)%P;
        if(i>=c) ff=(ff-C(i,c)+P)%P;
    }
    printf("%lld\n",ans%P);
    return 0;
}