#include<bits/stdc++.h>
using namespace std;
typedef long long int64;
const int64 P = 1000000000ll + 7;
int64 n,m,k;
int64 fz[1000010],fm[1000010];
int64 fb[1000010],fc[1000010];
int64 mpow(int64 x, int64 y)
{
	int64 tmp = x, ret = 1;
	while(y)
	{
		if(y & 1) ret = ret * tmp % P;
		tmp = tmp * tmp % P;
		y >>= 1;
	}
	return ret;
}
int64 C(int x, int y)
{
	if(x < y) return 0;
	return fz[x] * fm[y] % P * fm[x - y] % P;
}
int main()
{
    cin >> n >> m >> k;
    fz[0]=fm[0]=1;
    for(int i = 1; i <= 1000000; i++)
		fz[i] = fz[i - 1] * i %P, fm[i] = mpow(fz[i], P - 2);
	int64 ans = 0;
	for(int i = n; i < n + m + k + 1; i++)
	{
		int64 cnt = C(i - 1, n - 1);
		fb[i] = (fb[i - 1] * 2 % P + C(i - (n + 1), i - n - (m + 1))) % P;
		fc[i] = (fc[i - 1] * 2 % P + C(i - (n + 1), i - n - (k + 1))) % P;
		ans = (ans + cnt * ((mpow(2, i - n) - (fb[i] + fc[i]) % P) % P + P) % P * mpow(3, n + m + k - i) % P) % P;
	}
	cout << ans << endl;
    return 0;
}
