#include <bits/stdc++.h>
using namespace std;
struct CostFlow {
  static const long long INF = 102938475610293847LL;
  struct Edge {
    int v, r;
    long long f, c;
    Edge(int a, int b, int _c, int d) : v(a), r(b), f(_c), c(d) {}
  };
  vector<int> ans;
  int n, s, t, prv[205], prvL[205], inq[205];
  long long dis[205], fl, cost;
  vector<Edge> E[205];
  void init(int _n, int _s, int _t) {
    n = _n;
    s = _s;
    t = _t;
    for (int i = 0; i < n; i++) E[i].clear();
    fl = cost = 0;
  }
  void add_edge(int u, int v, long long f, long long c) {
    E[u].push_back(Edge(v, E[v].size(), f, c));
    E[v].push_back(Edge(u, E[u].size() - 1, 0, -c));
  }
  pair<long long, long long> flow() {
    while (true) {
      for (int i = 1; i <= n; i++) {
        dis[i] = INF;
        inq[i] = 0;
      }
      dis[s] = 0;
      queue<int> que;
      que.push(s);
      while (!que.empty()) {
        int u = que.front();
        que.pop();
        inq[u] = 0;
        for (int i = 0; i < E[u].size(); i++) {
          int v = E[u][i].v;
          long long w = E[u][i].c;
          if (E[u][i].f > 0 && dis[v] > dis[u] + w) {
            prv[v] = u;
            prvL[v] = i;
            dis[v] = dis[u] + w;
            if (!inq[v]) {
              inq[v] = 1;
              que.push(v);
            }
          }
        }
      }
      if (dis[t] == INF) break;
      for (int v = t, u, l; v != s; v = u) {
        u = prv[v];
        l = prvL[v];
      }
      int tf = 1;
      for (int v = t, u, l; v != s; v = u) {
        u = prv[v];
        l = prvL[v];
        E[u][l].f -= tf;
        E[v][E[u][l].r].f += tf;
      }
      cost += tf * dis[t];
      fl += tf;
      ans.push_back(cost);
    }
    return {fl, cost};
  }
} flow;
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  flow.init(n, 1, n);
  for (int i = 1; i <= m; i++) {
    int first, second, w;
    scanf("%d %d %d", &first, &second, &w);
    flow.add_edge(first, second, 1, w);
  }
  flow.flow();
  int q;
  scanf("%d", &q);
  while (q--) {
    int first;
    scanf("%d", &first);
    double ans = 1e9;
    int now = 1;
    for (auto it : flow.ans) {
      ans = min(ans, (it + first) * 1.0 / now);
      now++;
    }
    printf("%.12lf\n", ans);
  }
}
