#include <bits/stdc++.h>
using namespace std;
int N, M, K;
long long dp[4000][1001];
long long pow(long long x, long long k) {
  long long a = 1;
  while (k) {
    if (k & 1) a = (a * x) % 1000000007;
    x = (x * x) % 1000000007;
    k >>= 1;
  }
  return a;
}
long long inv(long long x) { return pow(x, 1000000007 - 2); }
long long C(long long n, long long r) {
  long long s = 1;
  for (int i = 1; i <= r; i++) {
    s = (s * (n + 1 - i)) % 1000000007;
    s = (s * inv(i)) % 1000000007;
  }
  return s;
}
int main() {
  cin >> N >> M >> K;
  if (N > 1000 || M > 1000 || K > 1000) return 1;
  dp[0][0] = 1;
  long long s = 0;
  for (int i = N; i <= N + M + K; i++) {
    int t = i - N;
    long long d = 0;
    for (int m = max(0, i - N - K); m <= M; m++) {
      d = (d + dp[t][m]) % 1000000007;
      dp[t + 1][m + 1] = (dp[t + 1][m + 1] + dp[t][m]) % 1000000007;
      dp[t + 1][m] = (dp[t + 1][m] + dp[t][m]) % 1000000007;
    }
    long long x =
        (((pow(3, N + M + K - i) * C(i - 1, N - 1)) % 1000000007) * d) %
        1000000007;
    s = (s + x) % 1000000007;
  }
  cout << s << "\n";
  return 0;
}
