#include <bits/stdc++.h>
using namespace std;

const int MOD = (int) 1e9 + 7;
const int N = 9e5 + 7;
long long fact[N], invfact[N];

long long power(long long a, long long n) {
    long long res = 1;
    while (n != 0) {
        if (n % 2 != 0) res = res * a % MOD;
        a = a * a % MOD;
        n /= 2;
    }
    return res;
}

long long inverse(int a) {
    return power(a, MOD - 2);
}

long long c(int n, int k) {
    if (k < 0 || k > n) return 0;
    return fact[n] * invfact[k] % MOD * invfact[n - k] % MOD;
}

int main() {
    ios::sync_with_stdio(false);
    fact[0] = 1;
    for (int i = 1; i < N; ++i) fact[i] = fact[i - 1] * i % MOD;
    for (int i = 0; i < N; ++i) invfact[i] = inverse(fact[i]);
    int n, m, k; cin >> n >> m >> k;
    int lft = 0, rgt = -1;
    long long sum = 0, res = 0;
    for (int l = 0; l <= m + k; ++l) {
        int newLft = l - min(l, k);
        int newRgt = min(l, m);
        while (rgt < newRgt) sum += c(l, ++rgt);
        while (rgt > newRgt) sum -= c(l, rgt--);
        while (lft < newLft) sum -= c(l, lft++);
        while (lft > newLft) sum += c(l, --lft);
        sum %= MOD;
        res = (res + sum * power(3, m + k - l) % MOD * c(n + l - 1, n - 1)) % MOD;
        sum = (sum * 2 - c(l, lft++) - c(l, rgt)) % MOD;
    }
    if (res < 0) res += MOD;
    cout << res << endl;
    return 0;
}
