#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T poww(T b, T p) {
  long long a = 1;
  while (p) {
    if (p & 1) {
      a = (a * b);
    }
    p >>= 1;
    b = (b * b);
  }
  return a;
}
template <class T>
inline T gcd(T a, T b) {
  if (b > a) return gcd(b, a);
  return ((b == 0) ? a : gcd(b, a % b));
}
template <class T>
inline T modpoww(T b, T p, T modd) {
  long long a = 1;
  while (p) {
    if (p & 1) {
      a = (a * b) % modd;
    }
    p >>= 1;
    b = (b * b) % modd;
  }
  return a % modd;
}
const int m = 998244353;
long long fact[5010];
long long ncr(int n, int r) {
  long long temp = fact[n] * modpoww<long long>(fact[r], m - 2, m);
  temp %= m;
  temp = temp * modpoww<long long>(fact[n - r], m - 2, m);
  return temp % m;
}
long long getcount(int a, int b) {
  int k;
  long long ct = 0, tmp;
  for ((k) = 0; (k) < (min(a, b) + 1); (k)++) {
    tmp = ncr(a, k) * ncr(b, k);
    tmp %= m;
    tmp = (tmp * fact[k]) % m;
    ct = (ct + tmp) % m;
  }
  return ct;
}
int main() {
  int a, b, c, i, j;
  fact[0] = 1;
  for ((i) = (1); (i) < (5010); (i) += 1) {
    fact[i] = (fact[i - 1] * i) % m;
  }
  cin >> a >> b >> c;
  long long ans = 0;
  long long ab, bc, ac;
  ab = bc = ac = 0;
  ab = getcount(a, b);
  bc = getcount(b, c);
  ac = getcount(a, c);
  cout << ((ab * bc) % m * ac) % m << "\n";
}
