#include <bits/stdc++.h>
using namespace std;
inline long long mmul(long long a, long long b) { return (a * b) % 998244353; }
inline long long madd(long long a, long long b) { return (a + b) % 998244353; }
long long mpow(long long a, long long p) {
  if (p == 0) return 1;
  long long halfPow = mpow(a, p / 2);
  return mmul(halfPow, p % 2 ? mmul(a, halfPow) : halfPow);
}
long long minv(long long a) { return mpow(a, 998244353 - 2); }
long long mdiv(long long a, long long b) { return mmul(a, minv(b)); }
vector<long long> _mfactMem(1, 1);
long long mfact(long long a) {
  if (a >= 998244353) return 0;
  while (a >= _mfactMem.size())
    _mfactMem.push_back(mmul(_mfactMem.size(), _mfactMem.back()));
  return _mfactMem[a];
}
long long mcomb(long long n, long long k) {
  if (n == 0 && k == 0) return 1;
  long long ni = n % 998244353, ki = k % 998244353;
  if (ni < ki) return 0;
  long long comb = mmul(mfact(ni), mmul(minv(mfact(ki)), minv(mfact(ni - ki))));
  return mcomb(n / 998244353, k / 998244353) * comb;
}
long long calc(int na, int nb) {
  long long cnt = 0;
  for (int i = 0; i <= min(na, nb); i++) {
    cnt = madd(cnt, mmul(mfact(i), mmul(mcomb(na, i), mcomb(nb, i))));
  }
  return cnt;
}
int main() {
  int a, b, c;
  scanf("%d %d %d\n", &a, &b, &c);
  int res = (int)mmul(calc(a, b), mmul(calc(b, c), calc(c, a)));
  printf("%d\n", res);
  return 0;
}
