#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

typedef long long LL;

const int Mod = 1e9 + 7;
const int N = 3e6 + 10;

int n, m, k;
LL pw2[N], pw3[N], fac[N], inv[N];

LL Power(LL a, LL b) {
	LL c = 1;
	for (; b; b >>= 1, (a *= a) %= Mod)
		if (b & 1)
			(c *= a) %= Mod;
	return c;
}

void Init() {
	pw2[0] = pw3[0] = 1;
	fac[0] = inv[0] = 1;
	for (int i = 1; i < N; ++i) {
		pw2[i] = pw2[i - 1] * 2 % Mod;
		pw3[i] = pw3[i - 1] * 3 % Mod;
		fac[i] = fac[i - 1] * i % Mod;
	}
	inv[N - 1] = Power(fac[N - 1], Mod - 2);
	for (int i = N - 2; i; --i)
		inv[i] = inv[i + 1] * (i + 1) % Mod;
}

LL Binom(int m, int n) {
	if (n > m)
		return 0;
	return fac[m] * inv[n] % Mod * inv[m - n] % Mod;
}

void Solve() {
	scanf("%d %d %d", &n, &m, &k);
	LL fb = 0;
	LL fc = 0;
	LL ans = 0;
	for (int i = n; i <= n + m + k; ++i) {
		LL cnt = Binom(i - 1, n - 1);
		if (i - n == m + 1) 
			fb = 1;
		else if (i - n > m + 1) 
			fb = (fb * 2 + Binom(i - n - 1, m)) % Mod;
		if (i - n == k + 1)
			fc = 1;
		else if (i - n > k + 1)
			fc = (fc * 2 + Binom(i - n - 1, k)) % Mod;
		LL f = (pw2[i - n] - fb + Mod - fc + Mod) % Mod;
		(ans += f * cnt % Mod * pw3[n + m + k - i]) %= Mod;
	}
	printf("%lld\n", ans);
}

int main() {

	Init();
	Solve();

	return 0;
}
