#include <bits/stdc++.h>
using std::max;
using std::min;
const int MAXN = 5010;
int c[MAXN][MAXN];
int fact[MAXN];
int main() {
  int a, b, cnum;
  scanf("%d%d%d", &a, &b, &cnum);
  int maxx = max(a, max(b, cnum));
  c[0][0] = 1;
  for (int i = 1; i <= maxx; ++i) {
    c[i][0] = c[i][i] = 1;
    for (int j = 1; j < i; ++j) {
      c[i][j] = ((long long)c[i - 1][j] + c[i - 1][j - 1]) % (998244353);
    }
  }
  fact[1] = 1;
  for (int i = 2; i <= maxx; ++i) {
    fact[i] = ((long long)fact[i - 1]) * i % (998244353);
  }
  long long ab_ans = 0, ac_ans = 0, bc_ans = 0;
  int abmin = min(a, b), acmin = min(a, cnum), bcmin = min(b, cnum);
  for (int i = 1; i <= abmin; ++i) {
    ab_ans = (ab_ans + (long long)c[a][i] * c[b][i] % (998244353) * fact[i] %
                           (998244353)) %
             (998244353);
  }
  for (int i = 1; i <= acmin; ++i) {
    ac_ans = (ac_ans + (long long)c[a][i] * c[cnum][i] % (998244353) * fact[i] %
                           (998244353)) %
             (998244353);
  }
  for (int i = 1; i <= bcmin; ++i) {
    bc_ans = (bc_ans + (long long)c[b][i] * c[cnum][i] % (998244353) * fact[i] %
                           (998244353)) %
             (998244353);
  }
  long long final_ans = 1;
  final_ans = (final_ans + ab_ans) % (998244353);
  final_ans = (final_ans + ac_ans) % (998244353);
  final_ans = (final_ans + bc_ans) % (998244353);
  final_ans = (final_ans + ab_ans * ac_ans % (998244353)) % (998244353);
  final_ans = (final_ans + ac_ans * bc_ans % (998244353)) % (998244353);
  final_ans = (final_ans + ab_ans * bc_ans % (998244353)) % (998244353);
  final_ans =
      (final_ans + ab_ans * ac_ans % (998244353) * bc_ans % (998244353)) %
      (998244353);
  printf("%lld", final_ans);
  return 0;
}
