#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL int main(){ int n,m,k; cin>>n>>m>>k; mcf_graph G(n*(k+1)); rep(i,n){ rep(j,k){ G.add_edge(i*(k+1)+j,i*(k+1)+j+1,1,0); } } vector a(m),b(m),c(m); rep(i,m)cin>>c[i]; rep(i,m){ cin>>a[i]>>b[i]; a[i]--,b[i]--; } rep(i,m){ rep(_,2){ rep(j,k+1){ G.add_edge(a[i]*(k+1)+j,b[i]*(k+1)+j,1,c[i]); if(j!=k){ G.add_edge(a[i]*(k+1)+j,b[i]*(k+1)+j+1,1,0); } } swap(a[i],b[i]); } } auto ans = G.flow(0,n*(k+1)-1,1); if(ans.first==0)cout<<-1<