#include <bits/stdc++.h>

using namespace std;

const int N = 1000010;
const int M = 1000000;
const int P = 1e9 + 7;

int n, m, k;
int fac[N], inv[N], power[N];

int Power(int x, int k) {
	if (k == 1) return x;
	int ret = Power(x, k >> 1);
	ret = 1LL * ret * ret % P;
	if (k & 1) ret = 1LL * ret * x % P;
	return ret;
}

void Init() {
	fac[0] = 1;
	for (int i = 1; i <= M; i++) {
		fac[i] = 1LL * fac[i - 1] * i % P;
	}
	inv[M] = Power(fac[M], P - 2);
	for (int i = M - 1; i >= 0; i--) {
		inv[i] = 1LL * inv[i + 1] * (i + 1) % P;
	}
	power[0] = 1;
	for (int i = 1; i <= M; i++) {
		power[i] = 1LL * power[i - 1] * 3 % P;
	}
}

int C(int n, int m) {
	if (n < m) return 0;
	return 1LL * fac[n] * inv[m] % P * inv[n - m] % P; 
}

int main() {
	Init();
	scanf("%d %d %d", &n, &m, &k);
	int ansL = 1, ans = 0;
	for (int L = n; L <= n + m + k; L++) {
		ans += 1LL * ansL * C(L - 1, n - 1) % P * power[n + m + k - L] % P;
		if (ans >= P) ans -= P;
		ansL <<= 1;
		if (ansL >= P) ansL -= P;
		ansL -= (C(L - n, m) + C(L - n, k)) % P;
		if (ansL < 0) ansL += P;
	}
	cout << ans << endl;
	return 0;
}