#include <bits/stdc++.h>
using namespace std;
const int64_t MOD = 1e9 + 7;
void add(int64_t& a, int64_t b) { a = (a + b) % MOD; }
void mul(int64_t& a, int64_t b) { a = a * b % MOD; }
vector<int64_t> famod, simod, fimod;
void create_fact_mod(int num) {
  famod[0] = 1;
  famod[1] = 1;
  for (int i = 2; i <= num; i++) {
    famod[i] = famod[i - 1] * i % MOD;
  }
}
void create_seq_inv_mod(int num) {
  simod[0] = 1;
  simod[1] = 1;
  for (int i = 2; i <= num; i++) {
    simod[i] = (MOD - MOD / i) * simod[MOD % i] % MOD;
  }
}
void create_fact_inv_mod(int num) {
  fimod[0] = 1;
  fimod[1] = 1;
  for (int i = 2; i <= num; i++) {
    fimod[i] = fimod[i - 1] * simod[i] % MOD;
  }
}
void create_mod_tables(int num) {
  famod.resize(num + 1);
  simod.resize(num + 1);
  fimod.resize(num + 1);
  create_fact_mod(num);
  create_seq_inv_mod(num);
  create_fact_inv_mod(num);
}
int64_t comb_mod(int n, int k) {
  return famod[n] * fimod[n - k] % MOD * fimod[k] % MOD;
}
int64_t perm_mod(int n, int k) { return famod[n] * fimod[n - k] % MOD; }
int64_t power_mod(int64_t num, int64_t power) {
  int64_t prod = 1;
  num %= MOD;
  while (power > 0) {
    if (power & 1) prod = prod * num % MOD;
    num = num * num % MOD;
    power >>= 1;
  }
  return prod;
}
int main() {
  int N, M, K;
  cin >> N >> M >> K;
  assert(N + M + K <= 3000);
  create_mod_tables(N + M + K);
  int64_t ans = 0;
  for (int m = 0; m <= M; m++) {
    for (int k = 0; k <= K; k++) {
      int64_t result = power_mod(3, m + k);
      mul(result, famod[N - 1 + M - m + K - k]);
      mul(result, fimod[N - 1]);
      mul(result, fimod[M - m]);
      mul(result, fimod[K - k]);
      add(ans, result);
    }
  }
  cout << ans << endl;
  return 0;
}
