#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
#define ll long long
#define _GLIBCXX_DEBUG
const ll MOD = 1000000007;
const ll Mod = 998244353;
const int MAX = 510000;
const double PI = 3.14159265358979;
const vector<int> dx = {1, 0};
const vector<int> dy = {0, 1};

// mod. m でのaの逆元a^{-1}を計算する
ll modinv(ll a, ll m) {
  ll b = m, u = 1LL, v = 0LL;
  while (b) {
    ll t = a/b;
    a -= t*b;
    swap(a, b);
    u -= t*v;
    swap(u, v);
  }
  u %= m;
  if (u<0) u += m;
  return u;
}

int main() {
  ll A, B, C;
  cin >> A >> B >> C;
  ll res = A%Mod;
  res = (res%Mod)*(B%Mod)%Mod;
  res = (res%Mod)*(C%Mod)%Mod;
  res = (res%Mod)*((A+1)%Mod)%Mod;
  res = (res%Mod)*((B+1)%Mod)%Mod;
  res = (res%Mod)*((C+1)%Mod)%Mod;
  cout << res*modinv(8, Mod)%Mod << endl;
  return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

int T;
ll N;
const ll MOD = 998244353;
ll mult(ll a, ll b){
    return (a*b)%MOD;
}

ll fexp(ll b, ll e){
    ll res = 1;
    for(;e;e>>=1){
        if(e&1)res = (res*b)%MOD;
        b = (b*b)%MOD;
    }
    return res;
}

// INVERSO MOLTIPLICATIVO

ll inv(ll a){
    return fexp(a,MOD-2);
}

int main(){
    const ll mod = 998244353;
    ll a, b, c;
    cin >> a >> b >> c;
    cout <<mult(mult(mult(a,a+1),mult(mult(c,c+1),mult(b,b+1))),inv(8));
    return 0;
}
