#include<iostream>
#include<algorithm>
using namespace std;
const int mod = 1e9 + 7;
typedef long long LL;
LL f[900015], r[900015];
LL th[900015];
LL inv(LL a) {
	LL ans = 1;
	LL b = mod - 2;
	while (b) {
		if (b % 2) ans = ans * a % mod;
		a = a * a % mod;
		b /= 2;
	}
	return ans;
}
LL C(int a, int b) {
	return f[a] * r[b] % mod * r[a - b] % mod;
}
int main() {
	f[0] = r[0] = th[0] = 1;
	for (int i = 1; i <= 900010; i++) {
		f[i] = f[i - 1] * i % mod;
		r[i] = inv(f[i]);
		th[i] = th[i - 1] * 3 % mod;
	}
	int n, m, k;
	scanf("%d%d%d", &n, &m, &k);
	LL ans = 0, sum = 1, ll = 0, rr = 0;
	for (int i = 0; i <= m + k; i++) {
		int l = max(0, i - k), r = min(i, m);
		if (ll < l) sum = (sum - C(i, ll) + mod) % mod, ll++;
		if (rr > r) sum = (sum - C(i, rr) + mod) % mod, rr--;

		LL res = C(i + n - 1, n - 1) * th[n + m + k - i - n] % mod * sum % mod;
		ans = (ans + res) % mod;

		sum = sum * 2 % mod;
		if (ll != 0) sum = (sum + C(i, ll - 1)) % mod;
		if (rr != i) sum = (sum + C(i, rr + 1)) % mod;
		rr++;
	}
	printf("%lld\n", ans);
}