#include using namespace std; struct State{ int x; // location int d; // drinks int t; // time bool operator<(State const &a)const{ return t!=a.t? t>a.t : d!=a.d? d>a.d : x>a.x; } }; int main(){ int np; cin>>np; vector t(np); for (auto &i: t) cin>>i; int n; cin>>n; vector c(n); for (auto &i: c) cin>>i; int nm; cin>>nm; vector> e(n,vector(n,1'000'000)); for (int i=0; i>a>>b>>d; --a, --b; e[a][b]=min(e[a][b],d); e[b][a]=min(e[b][a],d); } for (int i=0; i> dist(n,vector(np,1'000'000)); vector> visited(n,vector(np)); priority_queue todo; for (int i=n; i--;){ dist[i][0]=e[0][i]+t[0]; todo.push(State{i,0,dist[i][0]}); } while (not todo.empty()){ State s=todo.top(); todo.pop(); if (visited[s.x][s.d]) continue; if (s.t>c[s.x]) continue; best=max(best,s.d+1); if (s.d+1