from heapq import heappop, heappush


V = int(input())
C = int(input())
E = int(input())
edges = [[] for _ in range(V)]
for s, t, y, m in zip(*(map(int,input().split()) for _ in range(4))):
	edges[s - 1].append((m, y, t - 1))

INF = 1 << 60
dp = [[INF] * (C + 1) for _ in range(V)]
dp[0] = [0] * (C + 1)

q = [(0, 0, 0)]
while q:
	m, y, s = heappop(q)
	for dm, dy, t in edges[s]:
		if y + dy > C or m + dm >= dp[t][y + dy]:
			continue
		for ny in range(y + dy, C + 1):
			dp[t][ny] = m + dm
		heappush(q, (m + dm, y + dy, t))

print(dp[V - 1][C] if dp[V - 1][C] != INF else -1)