func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 998244353;   int main() {     ios_base::sync_with_stdio(false);     long long r, s, p;     cin >> r >> s >> p;     double dp[r + 1][s + 1][p + 1];     int visited[r + 1][s + 1][p + 1];     for (int i = 0; i < r + 1; i++) {       for (int j = 0; j < s + 1; j++) {         for (int k = 0; k < p + 1; k++) {           dp[i][j][k] = 0;           visited[i][j][k] = 0;         }       }     }     dp[r][s][p] = 1;     visited[r][s][p] = 1;     queue<pair<pair<double, double>, double> > q;     q.push(make_pair(make_pair(r, s), p));     while (!q.empty()) {       int sz = q.size();       for (int i = 0; i < sz; i++) {         pair<pair<double, double>, double> curp = q.front();         q.pop();         double rr = curp.first.first;         double ss = curp.first.second;         double rp = curp.second;         if ((int)rr > 0 && (int)ss > 0) {           dp[(int)rr][(int)ss - 1][(int)rp] +=               dp[(int)rr][(int)ss][(int)rp] *               (((rr * ss)) / ((rr * ss + rp * rr + ss * rp)));           if (visited[(int)rr][(int)ss - 1][(int)rp] == 0) {             q.push(make_pair(make_pair(rr, ss - 1), rp));             visited[(int)rr][(int)ss - 1][(int)rp] = 1;           }         }         if ((int)rr > 0 && (int)rp > 0) {           dp[(int)rr - 1][(int)ss][(int)rp] +=               dp[(int)rr][(int)ss][(int)rp] *               (((rr * rp)) / ((rr * ss + rp * rr + ss * rp)));           if (visited[(int)rr - 1][(int)ss][(int)rp] == 0) {             q.push(make_pair(make_pair(rr - 1, ss), rp));             visited[(int)rr - 1][(int)ss][(int)rp] = 1;           }         }         if ((int)rp > 0 && (int)ss > 0) {           dp[(int)rr][(int)ss][(int)rp - 1] +=               dp[(int)rr][(int)ss][(int)rp] *               (((rp * ss)) / ((rr * ss + rp * rr + ss * rp)));           if (visited[(int)rr][(int)ss][(int)rp - 1] == 0) {             q.push(make_pair(make_pair(rr, ss), rp - 1));             visited[(int)rr][(int)ss][(int)rp - 1] = 1;           }         }       }     }     double ans1, ans2, ans3;     ans1 = ans2 = ans3 = 0;     for (int i = 1; i <= r; i++) {       ans1 += dp[i][0][0];     }     for (int i = 1; i <= s; i++) {       ans2 += dp[0][i][0];     }     for (int i = 1; i <= p; i++) {       ans3 += dp[0][0][i];     }     std::cout << std::setprecision(9) << ans1 <<     << ans2 <<     << ans3;     return 0;   }   