#include <bits/stdc++.h>
using namespace std;
int nf, ne, ns;
int rf, re, rs;
int df, de;
double ret;
int used[13];
double lf, le, ls;
pair<double, double> vs[26];
double dp[21][21];
double tmp[26];
inline double intersection(double l1, double r1, double l2, double r2) {
  double l = max(l1, l2);
  double r = min(r1, r2);
  return max(0.0, r - l);
}
void calc() {
  int p = 0;
  for (int i = 0; i < (int)(13); i++) {
    double f = 2 * lf * df;
    double e = 2 * le * de;
    for (int j = 0; j < (int)(13); j++) {
      f += intersection(j - ls, j + ls, i - lf, i + lf) * df * used[j];
      e += intersection(j - ls, j + ls, i - le, i + le) * de * used[j];
    }
    if (used[i] == 0) {
      vs[p++] = make_pair(f, e);
      vs[p++] = make_pair(f, e);
    } else if (used[i] == 1) {
      vs[p++] = make_pair(f, e);
    }
  }
  sort(vs, vs + p, greater<pair<double, double> >());
  for (int i = 0; i < (int)(nf + 1); i++)
    for (int j = 0; j < (int)(ne + 1); j++) {
      int pos = nf - i + ne - j;
      if (i > 0 && j > 0)
        dp[i][j] =
            max(dp[i - 1][j] + vs[pos].first, dp[i][j - 1] + vs[pos].second);
      else if (i > 0)
        dp[i][j] = dp[i - 1][j] + vs[pos].first;
      else if (j > 0) {
        dp[i][j] = 0;
        for (int k = pos; k < p; k++) tmp[k - pos] = vs[k].second;
        sort(tmp, tmp + p - pos, greater<double>());
        for (int k = 0; k < (int)(j); k++) dp[i][j] += tmp[k];
      } else
        dp[i][j] = 0;
    }
  ret = max(ret, dp[nf][ne]);
}
void dfs(int n, int p) {
  if (n == 0) {
    calc();
    return;
  }
  if (p >= 13) return;
  dfs(n, p + 1);
  ++used[p];
  dfs(n - 1, p + 1);
  --used[p];
  if (n >= 2) {
    used[p] += 2;
    dfs(n - 2, p + 1);
    used[p] -= 2;
  }
}
void solve() {
  ret = 0;
  memset(used, 0, sizeof(used));
  lf = sqrt(rf * rf - 1);
  le = sqrt(re * re - 1);
  ls = sqrt(rs * rs - 1);
  dfs(ns, 0);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> nf >> ne >> ns;
  cin >> rf >> re >> rs;
  cin >> df >> de;
  solve();
  cout << fixed << setprecision(8) << ret << endl;
  return 0;
}
