#include #include using namespace std; using ll = long long; #define rep(i,n) for(int i=0;i<(int)(n);i++) using mint = atcoder::modint998244353; int main(){ int k,n,m; cin>>k>>n>>m; vector a(k),b(n); rep(i,k) cin>>a.at(i); rep(i,n) cin>>b.at(i); rep(i,k) a.at(i)--; vector> g(n,vector(n,1e18)); rep(lp,m){ int u,v; ll d; cin>>u>>v>>d; u--; v--; g.at(u).at(v)=d; g.at(v).at(u)=d; } rep(i,n) g.at(i).at(i)=0; { rep(i,n) rep(j,n) rep(k,n){ if(g.at(j).at(k)>g.at(j).at(i)+g.at(i).at(k)){ g.at(j).at(k)=g.at(j).at(i)+g.at(i).at(k); } } } atcoder::mcf_graph mcf(k+n+2); rep(i,k) rep(j,n){ mcf.add_edge(i,k+j,1,g.at(a.at(i)).at(j)); } rep(i,k) mcf.add_edge(k+n,i,1,0); rep(i,n) mcf.add_edge(k+i,k+n+1,b.at(i),0); auto[mx,cs]=mcf.flow(k+n,k+n+1,k); cout<