#include <bits/stdc++.h>
using namespace std;
const int maxK = 40;
const int maxN = 5000 + 9;
const int MOD = 998244353;
const double epsilon = 1e-8;
bool equal(double a, double b) {
  a = b - a;
  return fabs(a) <= epsilon;
}
int add(int a, int b) {
  a += b;
  if (a < 0) a += MOD;
  if (a >= MOD) a -= MOD;
  return a;
}
int mul(int64_t a, int64_t b) {
  int64_t c = a * b;
  if (c < MOD) return c;
  return c % MOD;
}
int _nCr[maxN][maxN / 2];
int fac[maxN];
int nCr(int n, int r) {
  if (r == 0 || r == n) return 1;
  if (n - r < r) r = n - r;
  if (_nCr[n][r]) return _nCr[n][r];
  return _nCr[n][r] = add(nCr(n - 1, r - 1), nCr(n - 1, r));
}
void calc_fac() {
  fac[0] = 1;
  for (int i = 1; i <= 5000; i++) {
    fac[i] = (1LL * i * fac[i - 1]) % MOD;
  }
}
int calc_bri(int n, int m) {
  int ans = 0;
  for (int i = 0; i <= n; i++) {
    ans = add(ans, mul(fac[i], mul(nCr(n, i), nCr(m, i))));
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  memset(_nCr, 0, sizeof _nCr);
  calc_fac();
  int n[3];
  cin >> n[0] >> n[1] >> n[2];
  sort(n, n + 3);
  int a = calc_bri(n[0], n[1]);
  int b = calc_bri(n[1], n[2]);
  int c = calc_bri(n[0], n[2]);
  int d = mul(a, b);
  int e = mul(d, c);
  cout << e << endl;
  return 0;
}
