#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define gpf(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
typedef long long ll;
const ll md = 1e9 + 7;
const int N = 1000000;
ll n, m, k;
ll fac[N], inv[N], m3[N];

ll fm(ll x, ll y){
	ll res = 1;
	while (y){
		if (y & 1) res = (res * x) % md;
		y /= 2;
		x = (x * x) % md;
	}
	return res;
}

ll C(int x, int y){
	if (y < 0) return 0;
	if (x < y) return 0;
	ll res = ((fac[x] * inv[x - y]) % md * inv[y]) % md;
	return res;
}

int main(){
	scanf("%lld%lld%lld", &n, &m, &k);
	fac[0] = 1;
	rep(i, 1, n + m + k) fac[i] = (fac[i - 1] * i) % md;
	rep(i, 1, n + m + k) inv[i] = fm(fac[i], md - 2);
	m3[0] = 1;
	rep(i, 1, n + m + k) m3[i] = (m3[i - 1] * 3) % md;
	inv[0] = 1;
	ll ans = 0;
	ll t = 1;
	rep(i, 0, m + k){
		ll tt = C(n + i - 1, n - 1) * t % md;
		tt = tt * m3[m + k - i] % md;
		ans = (ans + tt) % md;
		t = ((t * 2 + md - C(i, m)) % md + md - C(i, i - k)) % md;
	}
	printf("%lld\n", ans);
	return 0;
}