#include <bits/stdc++.h>
using namespace std;

#define fo(i, x, y) for (int i = (x); i <= (y); ++i)
#define fd(i, x, y) for (int i = (x); i >= (y); --i)

typedef long long ll;

const int maxn = 2e5 + 5;

int n;
ll a[maxn], s[maxn];

int getint()
{
	char ch;
	int res = 0, p;
	while (!isdigit(ch = getchar()) && (ch ^ '-'));
	p = ch == '-'? ch = getchar(), -1 : 1;
	while (isdigit(ch))
		res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();
	return res * p;
}

int main()
{
	//freopen("t.in", "r", stdin);
	n = getint();
	fo(i, 1, n) a[i] = getint(), s[i] = s[i - 1] + a[i];
	ll sum = 0, mx = 0;
	fo(i, 1, n)
	{
		mx = max(mx, a[i]);
		sum += s[i];
		printf("%lld\n", sum + mx * i);
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// --------------------------------------------------------
template <class T>
bool chmax(T& a, const T b) {
    if(a < b) {
        a = b;
        return 1;
    }
    return 0;
}
template <class T>
bool chmin(T& a, const T b) {
    if(b < a) {
        a = b;
        return 1;
    }
    return 0;
}
#define FOR(i, l, r) for(int i = (l); i < (r); ++i)
#define RFOR(i, l, r) for(int i = (r)-1; (l) <= i; --i)
#define REP(i, n) FOR(i, 0, n)
#define RREP(i, n) RFOR(i, 0, n)
#define ALL(c) (c).begin(), (c).end()
#define RALL(c) (c).rbegin(), (c).rend()
#define SORT(c) sort(ALL(c))
#define RSORT(c) sort(RALL(c))
#define MIN(c) *min_element(ALL(c))
#define MAX(c) *max_element(ALL(c))
#define SUM(c) accumulate(ALL(c), 0)
#define SUMLL(c) accumulate(ALL(c), 0LL)
#define SZ(c) ((int)(c).size())
#define CIN(c) cin >> (c)
#define COUT(c) cout << (c) << '\n'
#define debug(x) cerr << #x << " = " << (x) << '\n';
using P = pair<ll, ll>;
using VP = vector<P>;
using VVP = vector<VP>;
using VS = vector<string>;
using VI = vector<int>;
using VVI = vector<VI>;
using VLL = vector<ll>;
using VVLL = vector<VLL>;
using VB = vector<bool>;
using VVB = vector<VB>;
using VD = vector<double>;
using VVD = vector<VD>;
static const double EPS = 1e-10;
static const double PI = acos(-1.0);
static const ll MOD = 1000000007;
// static const ll MOD = 998244353;
static const int INF = (1 << 30) - 1;  // 1073741824 - 1
// static const ll INF = (1LL << 60) - 1;  // 4611686018427387904 - 1

const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }

// メモ化意味あんのかなぁ？？わかんないからコンテスト終わったらメモ化実験する
double dp[101][101][101];
int n;
bool found[101][101][101];
double rec(int a, int b, int c) {
    if(a < 0 || b < 0 || c < 0) {
        return 0;
    }
    if(a >= 100 || b >= 100 || c >= 100) return 1 / 3;
    if(found[a][b][c]) return dp[a][b][c];
    double val = 1;
    double total = a + b + c;
    val += rec(a + 1, b, c) * (a / total);
    val += rec(a, b + 1, c) * (b / total);
    val += rec(a, b, c + 1) * (c / total);

    found[a][b][c] = true;
    dp[a][b][c] = val;
    return val;
}
int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);

    int a, b, c;
    cin >> a >> b >> c;

    double ans = rec(a, b, c);
    cout << fixed << setprecision(15) << ans << endl;
    return 0;
}