#include <bits/stdc++.h>
const int N = 300000;
const int MOD = (int)1e9 + 7;
int inv[N + N + 1], a, b, c, bn_b[N], bn_c[N];
void update(int& x, int a) {
  x += a;
  if (x >= MOD) {
    x -= MOD;
  }
}
void prepare(int* bn, int a, int b) {
  bn[0] = 1;
  for (int i = 1; i < a; ++i) {
    bn[i] = 1LL * bn[i - 1] * (i + b) % MOD * inv[i] % MOD;
  }
}
int main() {
  inv[1] = 1;
  for (int i = 2; i <= N + N; ++i) {
    inv[i] = 1LL * (MOD - MOD / i) * inv[MOD % i] % MOD;
  }
  while (scanf("%d%d%d", &a, &b, &c) == 3) {
    a--;
    prepare(bn_b, b, c);
    prepare(bn_c, c, b);
    int three = 1;
    for (int i = 0; i < b + c; ++i) {
      three = 3LL * three % MOD;
    }
    int bn_a = 1;
    int ds = 1;
    int result = three;
    for (int s = 1; s <= b + c; ++s) {
      three = 1LL * three * inv[3] % MOD;
      bn_a = 1LL * bn_a * (s + a) % MOD * inv[s] % MOD;
      ds = 2LL * ds % MOD;
      if (s > b) {
        update(ds, MOD - bn_b[s - b - 1]);
      }
      if (s > c) {
        update(ds, MOD - bn_c[s - c - 1]);
      }
      update(result, 1LL * bn_a * ds % MOD * three % MOD);
    }
    printf("%d\n", result);
  }
}
