#include <bits/stdc++.h>
using namespace std;
constexpr int mod = 1000000007;
class Factorial {
  std::vector<int> table;

 public:
  Factorial(int max) : table(max) {
    table[0] = 1;
    for (int i = 1; i < max; ++i) {
      table[i] = (static_cast<long long>(table[i - 1]) * (i + 1)) % mod;
    }
  }
  long long operator()(int n) {
    if (n < 0) return 0;
    if (n == 0) return 1;
    return table[n - 1];
  }
};
class FactorialInverse {
  std::vector<int> table;
  Factorial& fact;

 public:
  FactorialInverse(int max, Factorial fact) : table(max), fact(fact) {
    int digit = 0;
    {
      int temp = mod - 2;
      while (temp > 0) {
        temp >>= 1;
        ++digit;
      }
    }
    auto origin = fact(max);
    vector<int> powerorigin2(digit);
    powerorigin2[0] = origin;
    for (int i = 1; i < digit; ++i)
      powerorigin2[i] =
          (static_cast<long long>(powerorigin2[i - 1]) * powerorigin2[i - 1]) %
          mod;
    {
      int table_max = 1;
      int temp = mod - 2;
      for (int i = 0; temp > 0; ++i, temp >>= 1) {
        if (!(temp & 1)) continue;
        table_max = (static_cast<long long>(table_max) * powerorigin2[i]) % mod;
      }
      table[max - 1] = table_max;
    }
    for (int i = max - 2; i >= 0; --i) {
      table[i] = (static_cast<long long>(table[i + 1]) * (i + 2)) % mod;
    }
  }
  long long operator()(int n) {
    if (n < 0) return 0;
    if (n == 0) return 1;
    return table[n - 1];
  }
};
template <typename T>
class Power3 {
  std::vector<T> table;

 public:
  Power3(int max) : table(max) {
    table[0] = 3;
    for (int i = 1; i < max; ++i) {
      table[i] = (static_cast<long long>(table[i - 1]) * 3) % mod;
    }
  }
  T operator()(int n) {
    if (n < 0) return 0;
    if (n == 0) return 1;
    return table[n - 1];
  }
};
int main() {
  int N, M, K;
  scanf("%d %d %d\n", &N, &M, &K);
  Factorial fact(N + M + K);
  FactorialInverse factinv(N + M + K, fact);
  function<long long(int, int)> tri = [&](int b, int c) {
    static const long long inv = factinv(N - 1);
    return (((((fact(N - 1 + b + c) * inv) % mod) * factinv(b)) % mod) *
            factinv(c)) %
           mod;
  };
  Power3<int> pow3(M + K);
  int result = 0;
  for (int b = 0; b <= M; ++b) {
    for (int c = 0; c <= K; ++c) {
      result += ((tri(b, c) * pow3(M + K - b - c)) % mod);
      result %= mod;
    }
  }
  printf("%d\n", result);
}
