#include <bits/stdc++.h>
using namespace std;
void R(int &x) { scanf("%d", &x); }
void R(long long &x) { scanf("%lld", &x); }
void R(unsigned long long &x) { scanf("%llu", &x); }
void R(double &x) { scanf("%lf", &x); }
void R(long double &x) { scanf("%Lf", &x); }
template <typename T>
void R(T &t) {
  cin >> t;
}
template <typename T>
void R(vector<T> &ar) {
  for (auto &it : ar) R(it);
}
template <typename T, typename... Args>
void R(T &t, Args &...args) {
  R(t);
  R(args...);
}
void W(const char &c) { putchar(c); };
void W(const int &x) { printf("%d", x); }
void W(const long long &x) { printf("%lld", x); }
void W(const unsigned long long &x) { printf("%llu", x); }
void W(const double &x) { printf("%lf", x); }
void W(const long double &x) { printf("%Lf", x); }
template <typename T>
void W(const T &t) {
  cout << t;
}
template <typename T>
void W(const vector<T> &ar) {
  for (size_t i = 0; i < ar.size(); ++i) {
    W(ar[i]);
    putchar(" \n"[i + 1u == ar.size()]);
  }
}
template <typename T, typename... Args>
void W(const T &t, const Args &...args) {
  W(t);
  W(args...);
}
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
const int maxn = 1010;
const long long mod = 1000000000 + 7;
long long pow_mod(long long a, long long p, const long long m) {
  long long ret = 1;
  for (; p; p >>= 1, a = a * a % m)
    if (p & 1) ret = ret * a % m;
  return ret % m;
}
long long inv(long long a, long long n) {
  return a < 2 ? a : ((1 - n * 1LL * inv(n % a, a)) / a % n + n) % n;
}
long long fac[maxn * 3], rev[maxn * 3];
long long f(long long t[3]) {
  long long r = fac[t[0] + t[1] + t[2]];
  for (int i = 0; i < int(3); ++i) r = r * rev[t[i]] % mod;
  return r;
}
int n, m, k;
int main() {
  fac[0] = rev[0] = 1;
  for (int i = 1; i < maxn * 3; ++i) {
    fac[i] = fac[i - 1] * i % mod;
    rev[i] = rev[i - 1] * inv(i, mod) % mod;
    assert(1LL * fac[i] * rev[i] % mod == 1);
  }
  R(n, m, k);
  long long ans = 0;
  for (int i = (0); i <= int(m); ++i)
    for (int j = (0); j <= int(k); ++j) {
      long long a[] = {n - 1, i, j};
      long long t = f(a);
      t = t * pow_mod(3, m - i, mod) % mod;
      t = t * pow_mod(3, k - j, mod) % mod;
      ans = (ans + t) % mod;
    }
  cout << ans << endl;
  return 0;
}
