#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, q, cnt[N], a[N];
long long c[10010][6];
double ans, f[N][102], tmp[N];
inline double C(int x, int y) {
  if (x <= 10000) return c[x][y];
  double ans = 1;
  int dv = 1;
  for (int i = x; i > x - y; --x) ans *= i;
  for (int i = y; i > 1; --i) dv *= i;
  return ans / dv;
}
int main() {
  for (int i = 0; i <= 10000; ++i) {
    c[i][0] = 1;
    for (int j = 1; j <= i && j <= 5; ++j)
      c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
  }
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    f[i][a[i]] = 1;
    cnt[i] = a[i];
    ans += (a[i] == 0);
  }
  scanf("%d", &q);
  int x, y, z;
  while (q--) {
    scanf("%d%d%d", &x, &y, &z);
    double sm = C(cnt[x], z);
    ans -= f[x][0];
    for (int i = min(cnt[x], a[x]); ~i; --i) tmp[i] = 0;
    for (int i = min(cnt[x], a[x]); ~i; --i)
      for (int j = max(z - cnt[x] + i, 0); j <= z && j <= i; ++j)
        tmp[i - j] += f[x][i] * C(i, j) * C(cnt[x] - i, z - j) / sm;
    for (int i = min(cnt[x], a[x]); ~i; --i) f[x][i] = tmp[i];
    cnt[x] -= z;
    cnt[y] += z;
    printf("%.11lf\n", ans += f[x][0]);
  }
  return 0;
}
