#include #include using mint = atcoder::static_modint<998244353>; //using mint = atcoder::static_modint<1000000007>; using namespace std; using namespace atcoder; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i dx{1,0,-1,0},dy{0,1,0,-1}; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n,m;cin >> n >> m; int d;cin >> d; mf_graph G(m*2+2); vector> uvpqw(m+1,vector(5)); rep(i,1,m+1)rep(j,0,5){ cin >> uvpqw[i][j]; G.add_edge(i,i+m,uvpqw[i][4]); } rep(i,1,m+1){ if(uvpqw[i][0]==1)G.add_edge(0,i,uvpqw[i][4]); if(uvpqw[i][1]==n)G.add_edge(i+m,m*2+1,uvpqw[i][4]); } const ll inf=1e10; rep(i,1,m+1)rep(j,1,m+1)if(i!=j){ if(uvpqw[i][3]+d<=uvpqw[j][2] && uvpqw[i][1]==uvpqw[j][0]){ G.add_edge(i+m,j,inf); } } cout << G.flow(0,m*2+1); }