#include <bits/stdc++.h>
#define maxn 1000086

using namespace std;

const int p = 1e9 + 7;

inline int fpow(int x, int y){
	int ans = 1;
	while(y){
		if(y & 1) ans = 1ll * ans * x % p;
		x = 1ll * x * x % p, y >>= 1;
	}
	return ans;
}

int n, m, k;
int sum[maxn], inv[maxn], pw[maxn];

inline int C(int n, int m){
	return 1ll * sum[n] * inv[n - m] % p * inv[m] % p;
}


int main(){
	sum[0] = 1;for(int i = 1;i < maxn;i++) sum[i] = 1ll * sum[i - 1] * i % p;
	inv[maxn - 1] = fpow(sum[maxn - 1], p - 2);
	for(int i = maxn - 2;~i;i--) inv[i] = 1ll * inv[i + 1] * (i + 1) % p;
	pw[0] = 1;for(int i = 1;i < maxn;i++) pw[i] = 1ll * pw[i - 1] * 3 % p;
	scanf("%d%d%d", &n, &m, &k);
	int ans = 0;
	if(m > k) swap(m, k);//m <= k
	int x = 1;
	for(int i = 0;i <= m + k;i++){
		ans = (ans + 1ll * C(n - 1 + i, n - 1) * pw[m + k - i] % p * x) % p;
		if(i < m) x = x * 2 % p;
		else if(i < k) x = (2ll * x + p - C(i, m)) % p;
		else x = (2ll * x + 2 * p - C(i, m) - C(i, k)) % p;
	}
	printf("%d", ans);
}