#include <bits/stdc++.h>
using namespace std;
double dp[100038][138][2];
int cislo = 100038;
int N[100038];
double C(int n, int m) {
  if (n < m) return 0;
  m = min(m, n - m);
  double k = 1;
  for (int i = n; i > (n - m); i--) {
    k *= i;
  }
  for (int i = 1; i <= m; i++) k /= i;
  return k;
}
int main() {
  int n;
  scanf("%d", &n);
  double vys = 0;
  int *pole = new int[100038];
  for (int i = 1; i <= n; i++) {
    scanf("%d", &pole[i]);
    dp[i][pole[i]][1] = 1;
    N[i] = pole[i];
    vys += dp[i][0][1];
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    int wt, p, wr;
    scanf("%d%d%d", &wt, &p, &wr);
    vys -= dp[wt][0][1];
    for (int i = 0; i <= min(pole[wt], N[wt]); i++) {
      dp[wt][i][0] = dp[wt][i][1];
      dp[wt][i][1] = 0;
    }
    for (int i = 0; i <= min(pole[wt], N[wt]); i++) {
      double D = 0;
      for (int j = i; j <= min(i + wr, min(pole[wt], N[wt])); j++)
        D += dp[wt][j][0] * C(j, j - i) * C(pole[wt] - j, wr + i - j) /
             C(pole[wt], wr);
      dp[wt][i][1] = D;
    }
    pole[wt] -= wr;
    pole[p] += wr;
    vys += dp[wt][0][1];
    printf("%.12lf\n", vys);
  }
  return 0;
}
