#include <bits/stdc++.h>
using namespace std;
struct pr {
  long long fl, cs;
  pr(long long f = 0, long long c = 0) : fl(f), cs(c) {}
};
const long long INF = 1e15;
namespace MCMF {
struct e {
  int to, nxt;
  long long val, cst;
} ed[400000];
int head[100000], top = 1;
void add_edge(int u, int v, long long val, long long cst) {
  top++;
  ed[top].to = v, ed[top].nxt = head[u], ed[top].val = val, ed[top].cst = cst;
  head[u] = top;
}
void add_pair(int u, int v, long long val, long long cst) {
  add_edge(u, v, val, cst);
  add_edge(v, u, 0, -cst);
}
int n, s, t;
long long dis[100000];
int last[100000];
bool vis[100000];
bool spfa() {
  for (int i = 0; i <= n; i++) dis[i] = INF, vis[i] = 0;
  dis[s] = 0;
  queue<int> q;
  q.push(s);
  vis[s] = 1;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    vis[u] = 0;
    for (int i = head[u]; i; i = ed[i].nxt) {
      int v = ed[i].to;
      if (ed[i].val <= 0) continue;
      if (dis[v] > dis[u] + ed[i].cst) {
        dis[v] = dis[u] + ed[i].cst;
        last[v] = i;
        if (!vis[v]) {
          q.push(v);
          vis[v] = 1;
        }
      }
    }
  }
  return dis[t] < INF;
}
vector<pr> EK() {
  vector<pr> v;
  long long f = 0, c = 0;
  while (spfa()) {
    long long flow = INF;
    for (int i = t; i != s; i = ed[last[i] ^ 1].to)
      flow = min(flow, ed[last[i]].val);
    f += flow, c += dis[t] * flow;
    for (int i = t; i != s; i = ed[last[i] ^ 1].to)
      ed[last[i]].val -= flow, ed[last[i] ^ 1].val += flow;
    v.push_back(pr(f, c));
  }
  return v;
}
void init(int nn, int ss, int tt) { n = nn, s = ss, t = tt; }
}  // namespace MCMF
int main() {
  int n = 0, m = 0;
  scanf("%d%d", &n, &m);
  MCMF::init(n, 1, n);
  for (int i = 1; i <= m; i++) {
    int x = 0, y = 0, z = 0;
    scanf("%d%d%d", &x, &y, &z);
    MCMF::add_pair(x, y, 1, z);
  }
  vector<pr> v = MCMF::EK();
  int q = 0;
  scanf("%d", &q);
  while (q--) {
    int x = 0;
    scanf("%d", &x);
    double ans = 1e18;
    for (int i = 0; i < v.size(); i++)
      ans = min(ans, (double)(v[i].cs + x) / v[i].fl);
    printf("%.10lf\n", ans);
  }
  return 0;
}
