#include <bits/stdc++.h>
using namespace std;
vector<long long> zyo, rz, z3;
long long mo = 1000000007;
long long extgcd(long long a, long long b, long long &x, long long &y) {
  long long g = a;
  x = 1;
  y = 0;
  if (b != 0) g = extgcd(b, a % b, y, x), y -= (a / b) * x;
  return g;
}
long long invMod(long long a, long long m) {
  long long x, y;
  if (extgcd(a, m, x, y) == 1) return (x + m) % m;
  return 0;
}
long long cal(int a, int b, int c) {
  return ((((zyo[a + b + c] * rz[a]) % mo) * rz[b]) % mo * rz[c]) % mo;
}
int main() {
  int n, m, k;
  long long out = 0;
  cin >> n >> m >> k;
  zyo.push_back(1);
  for (int i = 0; i < 364364; i++) zyo.push_back((zyo[i] * (i + 1)) % mo);
  for (int i = 0; i < 364364; i++) rz.push_back(invMod(zyo[i], mo));
  z3.push_back(1);
  for (int i = 0; i < 364364; i++) z3.push_back((z3[i] * 3) % mo);
  for (int i = 0; i < m + 1; i++)
    for (int j = 0; j < k + 1; j++) {
      long long t = (cal(n - 1, i, j) * z3[m - i]) % mo;
      out += t * z3[k - j];
      out %= mo;
    }
  cout << out % mo << endl;
}
