#include <bits/stdc++.h>
int mul(int x, int y) { return (int)((long long int)x * y % 1000000007); }
int add(int x, int y) { return (x += y) < 1000000007 ? x : x - 1000000007; }
int pw(int x, int y) {
  int r = 1;
  while (1) {
    if (y & 1) r = mul(r, x);
    if (y >>= 1)
      x = mul(x, x);
    else
      break;
  }
  return r;
}
int inv(int x) { return pw(x, 1000000007 - 2); }
int fac[1111111];
int mix2(int x, int y) { return mul(fac[x + y], inv(mul(fac[x], fac[y]))); }
int mix3(int x, int y, int z) {
  return mul(fac[x + y + z], inv(mul(mul(fac[x], fac[y]), fac[z])));
}
int main() {
  fac[0] = 1;
  for (int i = 1; i < 1111111; i++) {
    fac[i] = mul(fac[i - 1], i);
  }
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  int res = 0;
  for (int i = 0; i <= m; i++)
    for (int j = 0; j <= k; j++) {
      int now = 1;
      if (i == 0 && j == 0)
        now = 1;
      else if (i == 0)
        now = mix2(n - 1, j);
      else if (j == 0)
        now = mix2(n - 1, i);
      else {
        now = 0;
        now = add(now, mix3(n - 2, i, j));
        now = add(now, mix3(n - 1, i - 1, j));
        now = add(now, mix3(n - 1, i, j - 1));
      }
      res = add(res, mul(now, pw(3, m + k - i - j)));
    }
  printf("%d\n", res);
  return 0;
}
