#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
const ll INF = 1LL << 60;
const ll MOD = 1e9 + 7;

ll mod_pow(ll a, ll n) {
	if (n == 0) return 1;
	if (n % 2 == 0) {
		ll tmp = mod_pow(a, n / 2);
		return (tmp * tmp) % MOD;
	}
	return (a * mod_pow(a, n - 1)) % MOD;
}

vector<ll> fact;
vector<ll> inv_fact;

void comb_init(int n) {
	fact.resize(n + 1);
	inv_fact.resize(n + 1);
	fact[0] = inv_fact[0] = 1;
	for (int i = 1; i <= n; i++) {
		fact[i] = (fact[i - 1] * i) % MOD;
		inv_fact[i] = (inv_fact[i - 1] * mod_pow(i, MOD - 2)) % MOD;
	}
}

ll comb(int n, int k) {
	if (n < k) return 0;
	ll ret = fact[n];
	(ret *= inv_fact[k]) %= MOD;
	(ret *= inv_fact[n - k]) %= MOD;
	return ret;
}
int main() {
	int N, M, K;
	cin >> N >> M >> K;
	comb_init(N + M + K);
	ll ans = 0;
	ll now = 1;
	int l = 0, r = 0;
	for (int i = N; i <= N + M + K; i++) {
		ll x = mod_pow(3, N + M + K - i);
		(x *= comb(i - 1, N - 1)) %= MOD;
		(x *= now) %= MOD;
		(ans += x) %= MOD;
		(now *= 2) %= MOD;
		if (i >= N + K) {
			(now += MOD - comb(i - N, l)) %= MOD;
			l++;
		}
		if (i >= N + M) {
			(now += MOD - comb(i - N, r)) %= MOD;
		}
		else {
			r++;
		}
	}
	cout << ans << endl;
}