#include <bits/stdc++.h>
using namespace std;
double getComb(double n, double x) {
  if (x > n) {
    return 0;
  } else {
    double r = 1.0;
    for (double i = 1.0; i <= x; i += 1) {
      double a = n - i + 1;
      double b = a / i;
      r *= b;
    }
    return r;
  }
}
void merge(long long int brr[], long long int arr[], long long int l,
           long long int m, long long int r) {
  long long int i, j, k;
  long long int n1 = m - l + 1;
  long long int n2 = r - m;
  long long int L1[n1], L2[n1];
  long long int R1[n2], R2[n2];
  for (i = 0; i < n1; i++) {
    L1[i] = arr[l + i];
    L2[i] = brr[l + i];
  }
  for (j = 0; j < n2; j++) {
    R1[j] = arr[m + 1 + j];
    R2[j] = brr[m + 1 + j];
  }
  i = 0;
  j = 0;
  k = l;
  while (i < n1 && j < n2) {
    if (L1[i] <= R1[j]) {
      arr[k] = L1[i];
      brr[k] = L2[i];
      i++;
    } else {
      arr[k] = R1[j];
      brr[k] = R2[j];
      j++;
    }
    k++;
  }
  while (i < n1) {
    arr[k] = L1[i];
    brr[k] = L2[i];
    i++;
    k++;
  }
  while (j < n2) {
    arr[k] = R1[j];
    brr[k] = R2[j];
    j++;
    k++;
  }
}
void mergeSort(long long int brr[], long long int arr[], long long int l,
               long long int r) {
  if (l < r) {
    long long int m = l + (r - l) / 2;
    mergeSort(brr, arr, l, m);
    mergeSort(brr, arr, m + 1, r);
    merge(brr, arr, l, m, r);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int n, m;
  long long int k, i;
  long long int A, B;
  cin >> n;
  long long int j;
  double X[n];
  for (i = 0; i < n; i += 1) {
    cin >> X[i];
  }
  cin >> m;
  double Y[m];
  for (i = 0; i < m; i += 1) {
    cin >> Y[i];
  }
  cin >> k;
  double Z[k];
  for (i = 0; i < k; i += 1) {
    cin >> Z[i];
  }
  cin >> A;
  cin >> B;
  double max_rad = X[0];
  for (i = 0; i < n; i += 1) {
    if (X[i] > max_rad) {
      max_rad = X[i];
    }
  }
  double max = (B * Y[0]) / ((B * Y[0]) + (A * Z[0]));
  for (i = 0; i < m; i += 1) {
    for (j = 0; j < k; j += 1) {
      if ((B * Y[i]) / ((B * Y[i]) + (A * Z[j])) > max) {
        max = (B * Y[i]) / ((B * Y[i]) + (A * Z[j]));
      }
    }
  }
  cout << fixed << setprecision(12) << sqrt(pow(max_rad, 2) * max) << "\n";
  return 0;
}
