#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int p = 1e9+7;
const int N = 1500010;
int fac[N], inv[N], pwr[N];
inline int qp(int x, int y) {
	int res = 1;
	for(; y; y >>= 1, x = (ll)x*x%p) if(y&1) res = (ll)res*x%p;
	return res;
}
inline void init(int n) {
	fac[0] = pwr[0] = 1;
	for(int i = 1; i <= n; i ++ ) fac[i] = (ll)i*fac[i-1]%p, pwr[i] = pwr[i-1]*(ll)3%p;
	inv[n] = qp(fac[n], p-2);
	for(int i = n; i >= 1; i -- ) inv[i-1] = (ll)i*inv[i]%p;
}
inline ll c(int n, int m) {
	if(n < m) return 0;
	return (ll)fac[n]*inv[m]%p*inv[n-m]%p;
}
int main() {
	int A, B, C; scanf("%d%d%d", &A, &B, &C);
	init(A+B+C); A -- ;
	if(C < B) swap(B, C);
	ll now = 1, ans = 0;
	for(int i = 0; i <= B+C; i ++ ) {
		ans = (ans+c(A+i, A)*pwr[B+C-i]%p*now)%p;
		if(i < B) now = now*2%p;
		else if(i < C) now = (now*2-c(i, B))%p;
		else now = (now*2-c(i, B)-c(i, C))%p;
	}
	printf("%lld\n", (ans+p)%p);
	getchar(), getchar();
}
