#include <bits/stdc++.h>
using namespace std;
const int inf = 1.01e9;
const double eps = 1e-9;
const int N = 22;
double RES = 0;
double rf, re, rs;
double df, de;
int cnt = 0;
int a[N];
int ac = 0;
int b[N];
int bc = 0;
int nf, ne, ns;
double e[N];
double FI[200];
double EN[200];
double FIRE(int p) {
  double res = rf * 2;
  for (int i = 0; (i) < (bc); ++i) res += FI[abs(b[i] - p)];
  res *= df;
  return res;
}
double ENERGY(int p) {
  double res = re * 2;
  for (int i = 0; (i) < (bc); ++i) res += EN[abs(b[i] - p)];
  res *= de;
  return res;
}
void solve() {
  double val = 0;
  for (int i = 0; (i) < (ac); ++i) {
    double x = FIRE(a[i]);
    double y = ENERGY(a[i]);
    e[i] = x - y;
    val += y;
  }
  sort(e, e + ac);
  reverse(e, e + ac);
  for (int i = 0; (i) < (nf); ++i) val += e[i];
  RES = max(RES, val);
}
void go(int x, int y, int pos, int cnt1 = 0, int cnt2 = 0) {
  if (x == 0 && y == 0) {
    cnt++;
    solve();
    return;
  }
  if (x >= 1 && cnt1 < 2) {
    a[ac++] = pos;
    go(x - 1, y, pos + 1, cnt1 + 1, cnt2);
    ac--;
  }
  if (x >= 2) {
    a[ac++] = pos;
    a[ac++] = pos;
    go(x - 2, y, pos + 1, cnt1, cnt2);
    ac--;
    ac--;
  }
  if (y >= 1 && cnt2 < 1) {
    b[bc++] = pos;
    go(x, y - 1, pos + 1, cnt1, cnt2 + 1);
    bc--;
  }
  if (y >= 2) {
    b[bc++] = pos;
    b[bc++] = pos;
    go(x, y - 2, pos + 1, cnt1, cnt2);
    bc--;
    bc--;
  }
  if (x >= 1 && y >= 1) {
    a[ac++] = pos;
    b[bc++] = pos;
    go(x - 1, y - 1, pos + 1, cnt1, cnt2);
    ac--;
    bc--;
  }
}
int main() {
  scanf("%d%d%d", &nf, &ne, &ns);
  scanf("%lf%lf%lf", &rf, &re, &rs);
  scanf("%lf%lf", &df, &de);
  rf = sqrt(max(0., rf * rf - 1));
  re = sqrt(max(0., re * re - 1));
  rs = sqrt(max(0., rs * rs - 1));
  for (int i = 0; i < 100; ++i) {
    double l1 = -rf;
    double r1 = rf;
    double l2 = i - rs;
    double r2 = i + rs;
    FI[i] = max(0., min(r1, r2) - max(l1, l2));
  }
  for (int i = 0; i < 100; ++i) {
    double l1 = -re;
    double r1 = re;
    double l2 = i - rs;
    double r2 = i + rs;
    EN[i] = max(0., min(r1, r2) - max(l1, l2));
  }
  go(nf + ne, ns, 0);
  fprintf(stderr, "%d\n", cnt), fflush(stderr);
  printf("%.10f\n", RES);
  return 0;
}
