#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; int main(){ long long N,M,d; cin>>N>>M>>d; long long U[M],V[M],P[M],Q[M],W[M]; for(int i=0;i<M;i++){ cin>>U[i]>>V[i]>>P[i]>>Q[i]>>W[i]; U[i]--; V[i]--; } mf_graph<long long> graph(M+2); for(int i=0;i<M;i++){ if(U[i]==0)graph.add_edge(M,i,W[i]); if(V[i]==N-1)graph.add_edge(i,M+1,W[i]); } for(int i=0;i<M;i++){ for(int j=0;j<M;j++){ if(V[i]==U[j]&&Q[i]+d<=P[j])graph.add_edge(i,j,min(W[i],W[j])); } } cout<<graph.flow(M,M+1)<<endl; }