#include <bits/stdc++.h>
typedef long long ll;

const ll M = 1000000007;
int n, m, k;
ll f[1000010], fi[1000010], thr[1000010], ans;

ll pw(ll x, ll k){
	if(k == 1) return x;
	return (k % 2 ? x : 1) * pw(x * x % M, k / 2) % M;
}

ll cm(int n, int r){
	return f[n] * fi[r] % M * fi[n - r] % M;
}

ll cal(int x, int b){
	ll ret = 0, s = 1;
	for(int i = 0; i <= x; i++){
		ret = (ret + thr[m + k - i - b] * cm(n - 1 + i + b, n - 1) % M * s) % M;
		s = (2 * s - cm(i + b, i) + cm(i + b + 1, i + 1) + M) % M;
	}
	return ret;
}

int main(){
	scanf("%d%d%d", &n, &m, &k);
	f[0] = fi[0] = thr[0] = 1;
	for(int i = 1; i <= 1000005; i++){
		f[i] = f[i - 1] * i % M;
		fi[i] = pw(f[i], M - 2);
		thr[i] = thr[i - 1] * 3 % M;
	}
	printf("%lld\n", (cal(m + k, 0) - cal(m - 1, k + 1) - cal(k - 1, m + 1) + 2 * M) % M);
}