#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using ULL = unsigned long long;
using VI = vector<int>;
using VL = vector<LL>;
using PII = pair<int, int>;
using PLL = pair<LL, LL>;

#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define MP make_pair
#define PB push_back
#define EB emplace_back
#define F first
#define S second
#define FOR(i, a, b) for (int i = (a); i<(b); ++i)
#define RFOR(i, b, a) for (int i = (b)-1; i>=(a); --i)
#define FILL(a, b) memset(a, b, sizeof(a))

void dout() { cerr << endl; }

template <typename Head, typename... Tail>
void dout(Head H, Tail... T) {
    cerr << H << ' ';
    dout(T...);
}

const int mod = 998244353;

int add(int a, int b)
{
    a += b;
    if (a >= mod)
        a -= mod;
    return a;
}

int mul(int a, int b)
{
    return (LL)a * b % mod;
}

const int inv2 = 499122177;

int f(int x)
{
    return mul(mul(x, x + 1), inv2);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int a, b, c;
    cin >> a >> b >> c;
    cout << mul(f(a), mul(f(b), f(c))) << "\n"; 
    return 0;
}
#include <bits/stdc++.h>
#define M_PI           3.14159265358979323846  /* pi */
using namespace std;
using  ll = long long;

int main() {
	ll mod = 998244353;
	ll A, B, C;
	cin >> A >> B >> C;

	ll a = (((A % mod) * (A % mod + 1)) / 2) % mod;
	ll b = (((B % mod) * (B % mod + 1)) / 2) % mod;
	ll c = (((C % mod) * (C % mod + 1)) / 2) % mod;

	ll result;

	result = a * b % mod * c % mod;
	cout << result << endl;
}