{ int @n, @m, a[201], b[], c[], t[]; rd((a--, b--, c)(m), t(n)); rep(i, m) a[i + m] = b[i], b[i + m] = a[i], c[i + m] = c[i]; int M = 1003, A[M * m * 2], B[], C[], k = 0; rep(i, m * 2) rep(s, 1, M) { A[k] = a[i] * M + s; B[k] = b[i] * M + min(M - 1, s + t[b[i]]); C[k++] = c[i] / s + t[b[i]]; } wgraph g; g.setDirectEdge(M * n, k, A, B, C); int dist[M * n], ans = 1d9; g.getDist(t[0], dist, 1d9); rep(s, M) ans