#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
const int M = 998244353;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
inline int power(int a, int b, int mod=M) {
int x = 1;
a %= mod;
while (b) {
if (b & 1) x = (x * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return x;
}
template<const int mod>
struct mint {
int val;
constexpr mint(long long x = 0) : val((x % mod + mod) % mod) {}
explicit operator int() const { return val; }
mint& operator+=(const mint &b) { val += b.val; val -= mod * (val >= mod); return *this; }
mint& operator-=(const mint &b) { val -= b.val; val += mod * (val < 0); return *this; }
mint& operator*=(const mint &b) { val = 1ll * val * b.val % mod; return *this; }
mint& operator/=(const mint &b) { return *this *= b.inv(); }
mint inv() const { int x = 1, y = 0, t; for(int a=val, b=mod; b; swap(a, b), swap(x, y)) t = a/b, a -= t * b, x -= t * y; return mint(x); }
mint power(int b) const { mint a = *this, res(1); for(; b; a *= a, b /= 2) if(b & 1) res *= a; return res; }
mint operator-() const { return val == 0 ? 0 : mod - val; }
mint& operator++() { val = val == mod - 1 ? 0 : val + 1; return *this; }
mint& operator--() { val = val == 0 ? mod - 1 : val - 1; return *this; }
mint operator++(int32_t) { mint before = *this; ++*this; return before; }
mint operator--(int32_t) { mint before = *this; --*this; return before; }
friend mint operator+(const mint &a, const mint &b) {return mint(a) += b;}
friend mint operator-(const mint &a, const mint &b) {return mint(a) -= b;}
friend mint operator*(const mint &a, const mint &b) {return mint(a) *= b;}
friend mint operator/(const mint &a, const mint &b) {return mint(a) /= b;}
friend bool operator==(const mint &a, const mint &b) {return a.val == b.val;}
friend bool operator!=(const mint &a, const mint &b) {return a.val != b.val;}
friend bool operator<(const mint &a, const mint &b) {return a.val < b.val;}
friend istream& operator>>(istream &in, mint &a) {return in >> a.val;}
friend ostream& operator<<(ostream &os, const mint &a) {return os << a.val;}
};
using Mint = mint<M>;
namespace comb {
int n(0);
vector<Mint> _fac{1}, _invfac{1}, _inv{0};
void init(int m) {
m = min (m, M - 1);
if (m <= n) return;
_fac.resize(m + 1); _invfac.resize(m + 1); _inv.resize(m + 1);
for (int i = n + 1; i <= m; i++) _fac[i] = _fac[i - 1] * i;
_invfac[m] = _fac[m].inv();
for (int i = m; i > n; i--) _invfac[i - 1] = _invfac[i] * i, _inv[i] = _invfac[i] * _fac[i - 1];
n = m;
}
Mint fact(int m) { if (m > n) init(2 * m); return _fac[m]; }
Mint invfact(int m) { if (m > n) init(2 * m); return _invfac[m]; }
Mint inv(int m) { if (m > n) init(2 * m); return _inv[m]; }
Mint nCr(int n, int r) { if (n < r || r < 0) return 0; return fact(n) * invfact(r) * invfact(n - r); }
}
using comb::fact;
using comb::invfact;
using comb::inv;
using comb::nCr;
//_ ***************************** START Below *******************************
//* MOD changed
// const int M = 998244353;
int consistency(int a, int b, int c){
int ans = 0;
//* a, b
int x = min(a,b);
int y = max(a,b);
int res1 = 1;
for(int i=1; i<=x; i++){
int val = (int)(nCr(x, i) * nCr(y, i) * fact(i));
res1 = (res1 + val)%M;
}
//* b, c
x = min(b,c);
y = max(b,c);
int res2 = 1;
for(int i=1; i<=x; i++){
int val = (int)(nCr(x, i) * nCr(y, i) * fact(i));
res2 = (res2 + val)%M;
}
//* a, c
x = min(a,c);
y = max(a,c);
int res3 = 1;
for(int i=1; i<=x; i++){
int val = (int)(nCr(x, i) * nCr(y, i) * fact(i));
res3 = (res3 + val)%M;
}
int res = (res1 * ((res2 * res3)%M) ) % M;
return res;
}
int practice(int a, int b, int c){
return 0;
}
void solve() {
int a, b, c;
cin >> a >> b >> c;
cout << consistency(a, b, c) << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQojZGVmaW5lIHByaW50KGEpICAgICAgICAgZm9yKGF1dG8geCA6IGEpIGNvdXQgPDwgeCA8PCAiICI7IGNvdXQgPDwgZW5kbAoKY29uc3QgaW50IE0gPSA5OTgyNDQzNTM7CmNvbnN0IGludCBOID0gM2U1Kzk7CmNvbnN0IGludCBJTkYgPSAyZTkrMTsKY29uc3QgaW50IExJTkYgPSAyMDAwMDAwMDAwMDAwMDAwMDAxOwoKaW5saW5lIGludCBwb3dlcihpbnQgYSwgaW50IGIsIGludCBtb2Q9TSkgewogICAgaW50IHggPSAxOwogICAgYSAlPSBtb2Q7CiAgICB3aGlsZSAoYikgewogICAgICAgIGlmIChiICYgMSkgeCA9ICh4ICogYSkgJSBtb2Q7IAogICAgICAgIGEgPSAoYSAqIGEpICUgbW9kOwogICAgICAgIGIgPj49IDE7CiAgICB9CiAgICByZXR1cm4geDsKfQoKdGVtcGxhdGU8Y29uc3QgaW50IG1vZD4Kc3RydWN0IG1pbnQgewogICAgaW50IHZhbDsKICAgIGNvbnN0ZXhwciBtaW50KGxvbmcgbG9uZyB4ID0gMCkgOiB2YWwoKHggJSBtb2QgKyBtb2QpICUgbW9kKSB7fQogICAgZXhwbGljaXQgb3BlcmF0b3IgaW50KCkgY29uc3QgeyByZXR1cm4gdmFsOyB9CiAgICBtaW50JiBvcGVyYXRvcis9KGNvbnN0IG1pbnQgJmIpIHsgdmFsICs9IGIudmFsOyB2YWwgLT0gbW9kICogKHZhbCA+PSBtb2QpOyByZXR1cm4gKnRoaXM7IH0KICAgIG1pbnQmIG9wZXJhdG9yLT0oY29uc3QgbWludCAmYikgeyB2YWwgLT0gYi52YWw7IHZhbCArPSBtb2QgKiAodmFsIDwgMCk7IHJldHVybiAqdGhpczsgfQogICAgbWludCYgb3BlcmF0b3IqPShjb25zdCBtaW50ICZiKSB7IHZhbCA9IDFsbCAqIHZhbCAqIGIudmFsICUgbW9kOyByZXR1cm4gKnRoaXM7IH0KICAgIG1pbnQmIG9wZXJhdG9yLz0oY29uc3QgbWludCAmYikgeyByZXR1cm4gKnRoaXMgKj0gYi5pbnYoKTsgfQogICAgbWludCBpbnYoKSBjb25zdCB7IGludCB4ID0gMSwgeSA9IDAsIHQ7IGZvcihpbnQgYT12YWwsIGI9bW9kOyBiOyBzd2FwKGEsIGIpLCBzd2FwKHgsIHkpKSB0ID0gYS9iLCBhIC09IHQgKiBiLCB4IC09IHQgKiB5OyByZXR1cm4gbWludCh4KTsgfQogICAgbWludCBwb3dlcihpbnQgYikgY29uc3QgeyBtaW50IGEgPSAqdGhpcywgcmVzKDEpOyBmb3IoOyBiOyBhICo9IGEsIGIgLz0gMikgIGlmKGIgJiAxKSByZXMgKj0gYTsgcmV0dXJuIHJlczsgfQogICAgbWludCBvcGVyYXRvci0oKSBjb25zdCB7IHJldHVybiB2YWwgPT0gMCA/IDAgOiBtb2QgLSB2YWw7IH0KICAgIG1pbnQmIG9wZXJhdG9yKysoKSB7IHZhbCA9IHZhbCA9PSBtb2QgLSAxID8gMCA6IHZhbCArIDE7IHJldHVybiAqdGhpczsgfQogICAgbWludCYgb3BlcmF0b3ItLSgpIHsgdmFsID0gdmFsID09IDAgPyBtb2QgLSAxIDogdmFsIC0gMTsgcmV0dXJuICp0aGlzOyB9CiAgICBtaW50IG9wZXJhdG9yKysoaW50MzJfdCkgeyBtaW50IGJlZm9yZSA9ICp0aGlzOyArKyp0aGlzOyByZXR1cm4gYmVmb3JlOyB9CiAgICBtaW50IG9wZXJhdG9yLS0oaW50MzJfdCkgeyBtaW50IGJlZm9yZSA9ICp0aGlzOyAtLSp0aGlzOyByZXR1cm4gYmVmb3JlOyB9CiAgICBmcmllbmQgbWludCBvcGVyYXRvcisoY29uc3QgbWludCAmYSwgY29uc3QgbWludCAmYikge3JldHVybiBtaW50KGEpICs9IGI7fQogICAgZnJpZW5kIG1pbnQgb3BlcmF0b3ItKGNvbnN0IG1pbnQgJmEsIGNvbnN0IG1pbnQgJmIpIHtyZXR1cm4gbWludChhKSAtPSBiO30KICAgIGZyaWVuZCBtaW50IG9wZXJhdG9yKihjb25zdCBtaW50ICZhLCBjb25zdCBtaW50ICZiKSB7cmV0dXJuIG1pbnQoYSkgKj0gYjt9CiAgICBmcmllbmQgbWludCBvcGVyYXRvci8oY29uc3QgbWludCAmYSwgY29uc3QgbWludCAmYikge3JldHVybiBtaW50KGEpIC89IGI7fQogICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtaW50ICZhLCBjb25zdCBtaW50ICZiKSB7cmV0dXJuIGEudmFsID09IGIudmFsO30KICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgbWludCAmYSwgY29uc3QgbWludCAmYikge3JldHVybiBhLnZhbCAhPSBiLnZhbDt9CiAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgbWludCAmYSwgY29uc3QgbWludCAmYikge3JldHVybiBhLnZhbCA8IGIudmFsO30KICAgIGZyaWVuZCBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0gJmluLCBtaW50ICZhKSB7cmV0dXJuIGluID4+IGEudmFsO30KICAgIGZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0gJm9zLCBjb25zdCBtaW50ICZhKSB7cmV0dXJuIG9zIDw8IGEudmFsO30KfTsKdXNpbmcgTWludCA9IG1pbnQ8TT47CiAKbmFtZXNwYWNlIGNvbWIgewogICAgaW50IG4oMCk7CiAgICB2ZWN0b3I8TWludD4gX2ZhY3sxfSwgX2ludmZhY3sxfSwgX2ludnswfTsKICAgIHZvaWQgaW5pdChpbnQgbSkgewogICAgICAgIG0gPSBtaW4gKG0sIE0gLSAxKTsKICAgICAgICBpZiAobSA8PSBuKSByZXR1cm47CiAgICAgICAgX2ZhYy5yZXNpemUobSArIDEpOyBfaW52ZmFjLnJlc2l6ZShtICsgMSk7IF9pbnYucmVzaXplKG0gKyAxKTsKICAgICAgICBmb3IgKGludCBpID0gbiArIDE7IGkgPD0gbTsgaSsrKSBfZmFjW2ldID0gX2ZhY1tpIC0gMV0gKiBpOwogICAgICAgIF9pbnZmYWNbbV0gPSBfZmFjW21dLmludigpOwogICAgICAgIGZvciAoaW50IGkgPSBtOyBpID4gbjsgaS0tKSBfaW52ZmFjW2kgLSAxXSA9IF9pbnZmYWNbaV0gKiBpLCBfaW52W2ldID0gX2ludmZhY1tpXSAqIF9mYWNbaSAtIDFdOwogICAgICAgIG4gPSBtOwogICAgfQogICAgTWludCBmYWN0KGludCBtKSB7IGlmIChtID4gbikgaW5pdCgyICogbSk7IHJldHVybiBfZmFjW21dOyB9CiAgICBNaW50IGludmZhY3QoaW50IG0pIHsgaWYgKG0gPiBuKSBpbml0KDIgKiBtKTsgcmV0dXJuIF9pbnZmYWNbbV07IH0KICAgIE1pbnQgaW52KGludCBtKSB7IGlmIChtID4gbikgaW5pdCgyICogbSk7IHJldHVybiBfaW52W21dOyB9CiAgICBNaW50IG5DcihpbnQgbiwgaW50IHIpIHsgaWYgKG4gPCByIHx8IHIgPCAwKSByZXR1cm4gMDsgcmV0dXJuIGZhY3QobikgKiBpbnZmYWN0KHIpICogaW52ZmFjdChuIC0gcik7IH0KfQp1c2luZyBjb21iOjpmYWN0Owp1c2luZyBjb21iOjppbnZmYWN0Owp1c2luZyBjb21iOjppbnY7CnVzaW5nIGNvbWI6Om5DcjsKCgovL18gKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU1RBUlQgQmVsb3cgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKLy8qIE1PRCBjaGFuZ2VkCi8vIGNvbnN0IGludCBNID0gOTk4MjQ0MzUzOwoKCmludCBjb25zaXN0ZW5jeShpbnQgYSwgaW50IGIsIGludCBjKXsKCiAgICBpbnQgYW5zID0gMDsKICAgIAogICAgLy8qIGEsIGIgCiAgICBpbnQgeCA9IG1pbihhLGIpOwogICAgaW50IHkgPSBtYXgoYSxiKTsKICAgIGludCByZXMxID0gMTsKICAgIGZvcihpbnQgaT0xOyBpPD14OyBpKyspewogICAgICAgIGludCB2YWwgPSAgKGludCkobkNyKHgsIGkpICogbkNyKHksIGkpICogZmFjdChpKSk7CiAgICAgICAgcmVzMSA9IChyZXMxICsgdmFsKSVNOwogICAgfQogICAgCiAgICAvLyogYiwgYwogICAgeCA9IG1pbihiLGMpOwogICAgeSA9IG1heChiLGMpOwogICAgaW50IHJlczIgPSAxOwogICAgZm9yKGludCBpPTE7IGk8PXg7IGkrKyl7CiAgICAgICAgaW50IHZhbCA9ICAoaW50KShuQ3IoeCwgaSkgKiBuQ3IoeSwgaSkgKiBmYWN0KGkpKTsKICAgICAgICByZXMyID0gKHJlczIgKyB2YWwpJU07CiAgICB9CiAgICAKICAgIC8vKiBhLCBjCiAgICB4ID0gbWluKGEsYyk7CiAgICB5ID0gbWF4KGEsYyk7CiAgICBpbnQgcmVzMyA9IDE7CiAgICBmb3IoaW50IGk9MTsgaTw9eDsgaSsrKXsKICAgICAgICBpbnQgdmFsID0gIChpbnQpKG5Dcih4LCBpKSAqIG5Dcih5LCBpKSAqIGZhY3QoaSkpOyAgICAgICAKICAgICAgICByZXMzID0gKHJlczMgKyB2YWwpJU07CiAgICB9CgogICAgaW50IHJlcyA9IChyZXMxICogICgocmVzMiAqIHJlczMpJU0pICApICUgTTsKCiAgICByZXR1cm4gcmVzOwp9CgoKCgoKCgoKCgoKCgoKCmludCBwcmFjdGljZShpbnQgYSwgaW50IGIsIGludCBjKXsKCgogICAgcmV0dXJuIDA7Cn0KCgoKCgp2b2lkIHNvbHZlKCkgewogICAgCiAgICBpbnQgYSwgYiwgYzsKICAgIGNpbiA+PiBhID4+IGIgPj4gYzsKICAgIAogICAgCiAgICBjb3V0IDw8IGNvbnNpc3RlbmN5KGEsIGIsIGMpIDw8IGVuZGw7CgoKfQoKCgoKCmludDMyX3QgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGludCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=