#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const int dir_4[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
const int dir_8[8][2] = {{1, 0},  {1, 1},   {0, 1},  {-1, 1},
                         {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};
long long M = 1000000007;
long long modpow(long long x, long long k) {
  if (k == 0) return 1;
  long long ret = modpow(x, k / 2);
  ret *= ret;
  ret %= M;
  if (k % 2 == 1) {
    ret *= x;
    ret %= M;
  }
  return ret;
}
long long C[3002][3002];
void C_init() {
  for (int i = 0; i < 3002; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= i - 1; j++) {
      C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
      if (C[i][j] >= M) C[i][j] -= M;
    }
    C[i][i] = 1;
  }
}
int main() {
  C_init();
  long long n, m, k;
  cin >> n >> m >> k;
  if (n > 1000 || m > 1000 || k > 1000) return 0;
  n--;
  long long ret = 0;
  for (long long t = 0; t <= m + k; t++) {
    long long sum = 0;
    for (int i = max((long long)0, t - k); i <= min(m, t); i++) {
      sum += C[m + k - t][m - i];
    }
    sum %= M;
    sum *= modpow(3, t);
    sum %= M;
    sum *= C[n + m + k - t][n];
    sum %= M;
    ret += sum;
  }
  cout << ret % M << endl;
}
