#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long double DD;
const int inf = 1e9;
const int mo= 1e9+7;
const int N = 9e5+10;
int n, m, k, fac[N], inv[N], tmp[N], mi[N];


int C(int n, int m){
	return 1ll * fac[n] * inv[m] % mo * inv[n - m] % mo;
}

int pow(int a, int k){
	int ans=1;
	for(; k; k =k >> 1, a = 1ll * a * a % mo)
		if(k & 1)
			ans = 1ll * ans * a % mo;
	return ans;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(false);
	cout.tie(false);
	cin >> n >> m >> k;
	fac[0] = 1;
	for(int i = 1; i <= 900000; i++){
		fac[i] = 1ll * fac[i-1] * i % mo;
	}
	inv[900000] = pow(fac[900000], mo - 2);
	inv[0] = 1;
	int sz = m + k;
	for(int i = 899999; i ; i--)
		inv[i] = 1ll * inv[i + 1] * (i + 1) % mo;
	mi[0] = 1;
	for(int i = 1; i <= sz; i++)
		mi[i] = mi[i - 1] * 3ll % mo;
	
	LL ans = 0,sum = 1;
	for(int i = 0; i <= sz; i++){
		ans = (ans + 1ll * sum * C(i + n -1, n - 1) % mo * mi[sz - i] )% mo;
		sum=(sum<<1)%mo;
		if(i >= m)
			sum = (sum - C(i, m) + mo) % mo;
		if(i >= k)
			sum = (sum - C(i, i - k) + mo) % mo;
			
	}
	cout << ans << endl;
	return 0;
}


