#include<iostream>
using namespace std;
const long mod=998244353;
long A,B,C;
main()
{
	cin>>A>>B>>C;
	A=A*(A+1)/2%mod;
	B=B*(B+1)/2%mod;
	C=C*(C+1)/2%mod;
	cout<<A*B%mod*C%mod<<endl;
}

#include <bits/stdc++.h>
#define fi first
#define se second
#define rep(i,s,n) for (int i = (s); i < (n); ++i)
#define rrep(i,n,g) for (int i = (n)-1; i >= (g); --i)
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define len(x) (int)(x).size()
#define dup(x,y) (((x)+(y)-1)/(y))
#define pb push_back
#define Field(T) vector<vector<T>>
using namespace std;
using ll = long long;
using P = pair<int,int>;

vector<vector<vector<double>>> dp;

double f(int i, int j, int k) {
  if (dp[i][j][k] != 0.0) return dp[i][j][k];
  double n = i + j + k;
  if (i == 100 || j == 100 || k == 100) return 0;
  return dp[i][j][k] = i/n * (f(i+1,j,k) + 1) + j/n * (f(i,j+1,k) + 1) + k/n * (f(i,j,k+1) + 1);
}

int main() {
  int a, b, c;
  cin >> a >> b >> c;
  dp.assign(101, vector<vector<double>> (101, vector<double>(101, 0.0)));
  printf("%.10lf\n", f(a, b, c));
  return 0;
}