#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;
}