#include <stdio.h>
#include <string.h>
#include <algorithm>

const int kN = 1000000 + 5;
const int MOD = (int)1e9 + 7;
int Inv[kN], Finv[kN], F[kN], n, m, k;
int pascal[kN];

int binom(int a, int b)
{
    if (b < 0 || b > a) return 0;
    return F[a] * 1LL * Finv[b] % MOD * Finv[a - b] % MOD;
}

inline void add(int &a, int b)
{
    a += b;
    if (a >= MOD) a -= MOD;
}

int power(int a, int b, int p)
{
    int ret = 1;
    for ( ; b; b >>= 1, a = a * 1LL * a % MOD)
        if (b & 1)
            ret = ret * 1LL * a % MOD;
    return ret;
}

int main()
{
    Inv[1] = 1;
    for (int i = 2; i < kN; ++ i)
        Inv[i] = (MOD - MOD / i) * 1LL * Inv[MOD % i] % MOD;
    F[0] = Finv[0] = 1;
    for (int i = 1; i < kN; ++ i) {
        F[i] = F[i - 1] * 1LL * i % MOD;
        Finv[i] = Finv[i - 1] * 1LL * Inv[i] % MOD;
    }
    scanf("%d%d%d", &n, &m, &k);
    pascal[0] = 1;
    for (int i = 1; i <= m + k; ++ i) {
        pascal[i] = (pascal[i - 1] << 1) % MOD;
        if (i >= m + 1) add(pascal[i], MOD - binom(i - 1, m));
        if (i >= k + 1) add(pascal[i], MOD - binom(i - 1, k));
    }
    int result = 0;
    int t = n + m + k;
    for (int i = n; i <= t; ++ i) {
        add(result, binom(i - 1, n - 1) * 1LL * power(3, t - i, MOD) % MOD * pascal[i - n] % MOD);
    }
    printf("%d\n", result);
}
