#include <bits/stdc++.h>
using namespace std;
int f[1001000], n, m, k;
long long fac[1010000], inv[1010000], mi[1010000];
int C(int a, int b) {
  return 1ll * fac[a] * inv[b] % 1000000007 * inv[a - b] % 1000000007;
}
int main() {
  inv[0] = inv[1] = fac[0] = mi[0] = 1;
  for (int i = 1; i <= 600000; i++) fac[i] = fac[i - 1] * i % 1000000007;
  for (int i = 2; i <= 600000; i++)
    inv[i] = (1000000007 - 1000000007 / i) * inv[1000000007 % i] % 1000000007;
  for (int i = 1; i <= 600000; i++) inv[i] = inv[i - 1] * inv[i] % 1000000007;
  for (int i = 1; i <= 600000; i++) mi[i] = mi[i - 1] * 3 % 1000000007;
  scanf("%d%d%d", &n, &m, &k);
  f[0] = 1;
  for (int t = 1; t <= m + k; t++)
    f[t] = ((f[t - 1] * 2 - (t - k - 1 >= 0 ? C(t - 1, t - k - 1) : 0) -
             (t - 1 >= m ? C(t - 1, m) : 0)) %
                1000000007 +
            1000000007) %
           1000000007;
  long long ans = 0;
  for (int t = 0; t <= m + k; t++)
    ans = (ans + C(t + n - 1, n - 1) * mi[m + k - t] % 1000000007 * f[t] %
                     1000000007) %
          1000000007;
  printf("%lld\n", ans);
  return 0;
}
