#include <bits/stdc++.h>
using namespace std;
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
char ibuf[4096];
int ipt = 4096;
int readUInt() {
  while (ipt < 4096 && ibuf[ipt] < '0') ipt++;
  if (ipt == 4096) {
    fread(ibuf, 1, 4096, stdin);
    ipt = 0;
    while (ipt < 4096 && ibuf[ipt] < '0') ipt++;
  }
  int n = 0;
  char neg = 0;
  if (ipt != 0 && ibuf[ipt - 1] == '-') neg = 1;
  while (ipt < 4096 && ibuf[ipt] >= '0') n = (n * 10) + (ibuf[ipt++] - '0');
  if (ipt == 4096) {
    fread(ibuf, 1, 4096, stdin);
    ipt = 0;
    while (ipt < 4096 && ibuf[ipt] >= '0') n = (n * 10) + (ibuf[ipt++] - '0');
  }
  return neg ? -n : n;
}
int main() {
  int n;
  scanf("%d", &n);
  ;
  float r1 = 0;
  for (__typeof(n) ni(0); ni < n; ni++) {
    float x;
    cin >> x;
    if (x > r1) r1 = x;
  }
  scanf("%d", &n);
  ;
  float y1 = 0;
  for (__typeof(n) ni(0); ni < n; ni++) {
    float x;
    cin >> x;
    if (x > y1) y1 = x;
  }
  scanf("%d", &n);
  ;
  float y2 = 10000;
  for (__typeof(n) ni(0); ni < n; ni++) {
    float x;
    cin >> x;
    if (x < y2) y2 = x;
  }
  double A, B;
  cin >> A >> B;
  double r2 = r1 / sqrt(1 + (A * y2) / (B * y1));
  printf("%.12lf\n", r2);
  return 0;
}
