#include <cstdio>
#include <algorithm>

using namespace std;

int mod = 1000000007;
long long a[1000001];
long long inv[1000001];
long long fact[1000001];
long long invfact[1000001];

void calc_inv(int n, int mod) {
    inv[1] = 1;
    for (int i = 2; i <= n; i++) inv[i] = inv[mod % i] * (mod - mod / i) % mod;
    
    fact[0] = invfact[0] = 1;
    for (int i = 1; i <= n; i++) fact[i] = fact[i - 1] * i % mod;
    for (int i = 1; i <= n; i++) invfact[i] = invfact[i - 1] * inv[i] % mod;
}

long long comb(int x, int y, int mod) {
    return fact[x] * invfact[y] % mod * invfact[x - y] % mod;
}

int main() {
    int n, m, k, l = 0, r = 0, i;
    long long ans = 0, sum = 1;
    
    scanf("%d %d %d", &n, &m, &k);
    
    calc_inv(1000000, mod);
    
    a[0] = 1;
    for (i = 1; i <= 1000000; i++) a[i] = a[i - 1] * 3 % mod;
    
    for (i = 0; i <= m + k; i++) {
        ans += a[m + k - i] * comb(n + i - 1, n - 1, mod) % mod * sum % mod;
        
        sum = sum * 2 % mod;
        if (l > 0) sum = (sum + comb(i, l - 1, mod)) % mod;
        if (r < i) sum = (sum + comb(i, r + 1, mod)) % mod;
        
        r++;
        
        if (i + 1 - l > k) {
            sum = (sum - comb(i + 1, l, mod) + mod) % mod;
            l++;
        }
        
        if (r > m) {
            sum = (sum - comb(i + 1, r, mod) + mod) % mod;
            r--;
        }
    }
    
    printf("%lld\n", ans % mod);
    
    return 0;
}
