#include <bits/stdc++.h>
using namespace std;
int n;
int m;
int k;
long long int ppow(long long int i, long long int j) {
  long long int res = 1;
  while (j) {
    if ((j & 1LL)) {
      res *= i;
      if (res >= 1000000007) res %= 1000000007;
    }
    i *= i;
    if (i >= 1000000007) i %= 1000000007;
    j >>= 1;
  }
  return res;
}
long long int ka[300004];
long long int inv[300004];
long long int C(int a, int b) {
  long long int r = ka[a];
  long long int rr = inv[b] * inv[a - b];
  if (rr >= 1000000007) rr %= 1000000007;
  r *= rr;
  if (r >= 1000000007) r %= 1000000007;
  return r;
}
long long int p3[300004];
long long int p[1002][1002];
long long int ne[1002][1002];
long long int ii[300004];
int main() {
  for (int i = 1; i < 300004; i++) {
    ii[i] = ppow(i, 1000000007 - 2);
  }
  p3[0] = 1;
  for (int i = 1; i < 300004; i++) {
    p3[i] = p3[i - 1];
    p3[i] *= 3LL;
    if (p3[i] >= 1000000007) p3[i] %= 1000000007;
  }
  ka[0] = 1;
  for (int i = 1; i < 300004; i++) {
    ka[i] = ka[i - 1];
    ka[i] *= (long long int)(i);
    if (ka[i] >= 1000000007) ka[i] %= 1000000007;
  }
  for (int i = 0; i < 300004; i++) {
    inv[i] = ppow(ka[i], 1000000007 - 2);
  }
  cin >> n >> m >> k;
  if (n > 1000 || m > 1000 || k > 1000) {
    return 0;
  }
  n--;
  long long int ans = 0;
  for (int i = 0; i <= 1; i++) {
    for (int j = 0; j <= k; j++) {
      int can = i + j + 1;
      long long int W = ka[i + j + n];
      long long int r = inv[n] * inv[j];
      r %= 1000000007;
      r *= inv[i];
      r %= 1000000007;
      W *= r;
      W %= 1000000007;
      long long way = W;
      way *= p3[m - i];
      if (way >= 1000000007) way %= 1000000007;
      way *= p3[k - j];
      if (way >= 1000000007) way %= 1000000007;
      ans += way;
      if (ans >= 1000000007) ans %= 1000000007;
      p[i][j] = way;
    }
  }
  for (int j = 0; j <= k; j++) {
    int jj = j;
    int i = 0;
    long long int C = p[i][jj];
    long long int SS = 1;
    long long int MUL = 1;
    while (jj > 0) {
      MUL *= (long long int)(jj);
      MUL %= 1000000007;
      MUL *= ii[i + 1];
      MUL %= 1000000007;
      SS += MUL;
      SS %= 1000000007;
      i++;
      jj--;
    }
    ans += C * SS;
    ans %= 1000000007;
  }
  printf("%lld\n", ans);
  return 0;
}
