#include <bits/stdc++.h>
using namespace std;

const int N = 900005;
const int mod = 1e9 + 7;

#define int long long

int n, m, k, res;
int prd[N], inv[N], pw3[N], f[N];

int C(int k, int n) {
	if (n < k || n < 0 || k < 0) return 0;
	return prd[n] * inv[k] % mod * inv[n - k] % mod; 
}

int pw(int x, int y) {
	if (!y) return 1;
	int ret = pw(x, y >> 1); ret = ret * ret % mod;
	if (y & 1) ret = ret * x % mod; return ret;
}

void prepare() {
	prd[0] = 1;
	for (int i = 1; i < N; ++i) prd[i] = prd[i - 1] * i % mod;
	inv[N - 1] = pw(prd[N - 1], mod - 2);
	for (int i = N - 1; i >= 1; --i) inv[i - 1] = inv[i] * i % mod;
	pw3[0] = 1;
	for (int i = 1; i < N; ++i) pw3[i] = 3LL * pw3[i - 1] % mod;
}

signed main() {
	cin >> n >> m >> k;
	prepare();
	f[0] = 1; 
	int L = 0, R = 0;
	for (int i = 1; i <= m + k; ++i) {
		int l = max(0LL, i - k), r = min(m, i);
		f[i] = f[i - 1] * 2 + C(L - 1, i - 1) - C(R, i - 1);
		if (l == L + 1) f[i] -= C(l - 1, i);
		if (r == R + 1) f[i] += C(r, i);
		f[i] %= mod; if (f[i] < 0) f[i] += mod;
		L = l, R = r;
		// cout << f[i] << ' ' << l << ' ' << r << '\n';
	}
	for (int i = 0; i <= m + k; ++i) {
		res = (res + f[i] * pw3[m + k - i] % mod * C(i, n - 1 + i)) % mod;
	}
	cout << res;
}