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

const int DIM = 1e6 + 5;
const int MOD = 1e9 + 7;

int fct[DIM], inv[DIM], pwr[DIM];

int lgput( int x, int n ) {
    if( n == 0 )
        return 1;
    
    int y = lgput( x, n >> 1 );
    y = ( 1LL * y * y ) % MOD;
    
    if( n & 1 )
        y = ( 1LL * y * x ) % MOD;
    
    return y;
}

inline int comb( int n, int k ) {
    int ans = fct[n];
    ans = ( 1LL * ans * inv[k] ) % MOD;
    ans = ( 1LL * ans * inv[n - k] ) % MOD;
    
    return ans;
}

int main( void ) {
    
    int n, m, k;
    cin >> n >> m >> k;
    
    fct[0] = inv[0] = pwr[0] = 1;
    for( int i = 1; i <= n + m + k; i ++ ) {
        fct[i] = ( 1LL * fct[i - 1] * i ) % MOD;
        pwr[i] = ( 3LL * pwr[i - 1] ) % MOD;
    }
    
    inv[n + m + k] = lgput( fct[n + m + k], MOD - 2 );
    for( int i = n + m + k - 1; i >= 1; i -- )
        inv[i] = ( 1LL * inv[i + 1] * (i + 1) ) % MOD;
    
    int ans = 0, aux = 1;
    for( int i = 0; i <= m + k; i ++ ) {
        if( i != 0 ) {
            aux = ( aux << 1 ) % MOD;
            
            if( i > m )
                aux = ( aux - comb( i - 1, m ) + MOD ) % MOD;
            if( i > k )
                aux = ( aux - comb( i - 1, k ) + MOD ) % MOD;
        }
        
        ans = ( 1LL * aux * comb( i + n - 1, i ) % MOD * pwr[m + k - i] + ans ) % MOD;
    }
    
    cout << ans << endl;
    return 0;
}