#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e9 + 7, mod = 1e9 + 7;
const long long max_n = 1e6 + 2;
long long n;
long long a[max_n], lc[max_n], rc[max_n];
long long d1[max_n], d2[max_n], d3[max_n];
void scan() {
  cin >> n;
  for (long long i = 0; i < n; ++i) cin >> a[i];
  deque<long long> so;
  for (long long i = 0; i < n; ++i) {
    while ((long long)so.size() && a[so.back()] >= a[i]) so.pop_back();
    if ((long long)so.size())
      lc[i] = i - so.back() - 1;
    else
      lc[i] = i;
    so.emplace_back(i);
  }
  so.clear();
  for (long long i = n - 1; i >= 0; --i) {
    while ((long long)so.size() && a[so.back()] > a[i]) so.pop_back();
    rc[i] = ((long long)so.size() ? so.back() : n) - i - 1;
    so.emplace_back(i);
  }
}
void add1(long long l, long long r, long long x) {
  d1[l] += x;
  d1[r + 1] -= x * (r - l + 2);
  d1[r + 2] += x * (r - l + 1);
}
void add2(long long l, long long r, long long x) {
  d2[r] += x;
  if (l) d2[l - 1] -= x * (r - l + 2);
  if (l >= 2) d2[l - 2] += x * (r - l + 1);
}
void add3(long long l, long long r, long long x) {
  d3[l] += x;
  d3[r + 1] -= x;
}
void run() {
  scan();
  for (long long i = 0; i < n; ++i) {
    long long l1 = lc[i], l2 = rc[i];
    if (l1 > l2) swap(l1, l2);
    add1(1, l1, a[i]);
    add3(l1 + 1, l1 + 1 + l2 - l1, (l1 + 1) * a[i]);
    add2(l1 + 2 + l2 - l1, l1 + l2 + 1, a[i]);
  }
  for (long long i = 1; i <= n; ++i) d1[i] += d1[i - 1];
  for (long long i = 1; i <= n; ++i) d1[i] += d1[i - 1];
  for (long long i = n; i >= 0; --i) d2[i] += d2[i + 1];
  for (long long i = n; i >= 0; --i) d2[i] += d2[i + 1];
  for (long long i = 1; i <= n; ++i) d3[i] += d3[i - 1];
  long long k;
  cin >> k;
  while (k--) {
    long long v;
    cin >> v;
    cout << (long double)(d1[v] + d2[v] + d3[v]) / (n - v + 1) << endl;
  }
}
signed main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cout.precision(15);
  run();
}
