#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
template <typename T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <typename T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
template <typename T>
T inf() {
  assert(false);
}
template <>
constexpr int inf<int>() {
  return 1e9;
}
template <>
constexpr ll inf<ll>() {
  return 1e18;
}
template <>
constexpr ld inf<ld>() {
  return 1e30;
}
const int mod = 1000000007;
struct Mod {
  int n;
  Mod() : n(0) { ; }
  Mod(int m) : n(m) {
    if (n >= mod)
      n %= mod;
    else if (n < 0)
      n = (n % mod + mod) % mod;
  }
  operator int() { return n; }
};
bool operator==(Mod a, Mod b) { return a.n == b.n; }
Mod operator+=(Mod &a, Mod b) {
  a.n += b.n;
  if (a.n >= mod) a.n -= mod;
  return a;
}
Mod operator-=(Mod &a, Mod b) {
  a.n -= b.n;
  if (a.n < 0) a.n += mod;
  return a;
}
Mod operator*=(Mod &a, Mod b) {
  a.n = ((long long)a.n * b.n) % mod;
  return a;
}
Mod operator+(Mod a, Mod b) { return a += b; }
Mod operator-(Mod a, Mod b) { return a -= b; }
Mod operator*(Mod a, Mod b) { return a *= b; }
Mod operator^(Mod a, int n) {
  if (n == 0) return Mod(1);
  Mod res = (a * a) ^ (n / 2);
  if (n % 2) res = res * a;
  return res;
}
ll inv(ll a, ll p) { return (a == 1 ? 1 : (1 - p * inv(p % a, a)) / a + p); }
Mod operator/(Mod a, Mod b) { return a * Mod(inv(b, mod)); }
Mod fact[1024000], factinv[1024000];
void init() {
  fact[0] = Mod(1);
  factinv[0] = 1;
  for (int i = 0; i < (int)(1024000 - 1); i++) {
    fact[i + 1] = fact[i] * Mod(i + 1);
    factinv[i + 1] = factinv[i] / Mod(i + 1);
  }
}
Mod comb(int a, int b) { return fact[a] * factinv[b] * factinv[a - b]; }
Mod threes[1024000];
int main() {
  init();
  threes[0] = 1;
  for (int i = 0; i < (int)(1024000 - 1); i++)
    threes[i + 1] = threes[i] * Mod(3);
  int N, M, K;
  cin >> N >> M >> K;
  Mod res = 0;
  for (int i = 0; i < (int)(M + K + 1); i++) {
    for (int j = 0; j < (int)(M + 1); j++) {
      int k = i - j;
      if (k < 0 || k > K) continue;
      Mod val = fact[i + N - 1] * factinv[N - 1] * factinv[j] * factinv[k] *
                threes[(M - j) + (K - k)];
      res += val;
    }
  }
  cout << res << endl;
  return 0;
}
