N,M,Q = list(map(int,input().split()))

# 10個の数列で、A_i <= A_i+1となる組み合わせ（最大10）は

# [1,1,1,1,1,1,1,1,1,1]のどこに10個のUPを入れるかの組み合わせであり

# 20C10 = 184756

# この組み合わせに対して最大50のクエリを試すと、9237800通り

# 全探索する



query = [None] * Q

for i in range(Q):

  query[i] = list(map(int,input().split()))

  

stack = []

for i in range(1,M + 1):

  stack.append([i])



def calc(arr,query):

  res = 0

  for q in query:

    a,b,c,d = q

    if arr[b-1] - arr[a-1] == c:

      res += d

  return res

  

ans = 0

while stack:

  arr = stack.pop()

  if len(arr) == N:

    val = calc(arr,query)

    if val > ans:

      ans = val

    continue

  for i in range(arr[-1],M+1):

    stack.append(arr + [i])



print(ans)
N,M,Q = list(map(int,input().split()))

query = [None] * Q

for i in range(Q):

  query[i] = list(map(int,input().split()))

  

def calc(arr,query):

  res = 0

  for a,b,c,d in query:

    if arr[b-1] - arr[a-1] == c:

      res += d

  return res

  

ans = 0

import itertools

for arr in itertools.combinations_with_replacement(list(range(1,M+1)),N):

  val = calc(arr,query)

  if ans < val:

    ans = val

print(ans)
N, M, Q = list(map(int, input().split()))
# 10個の数列で、A_i <= A_i+1となる組み合わせ（最大10）は
# [1,1,1,1,1,1,1,1,1,1]のどこに10個のUPを入れるかの組み合わせであり
# 20C10 = 184756
# この組み合わせに対して最大50のクエリを試すと、9237800通り
# 全探索する
query = [None] * Q
for i in range(Q):
    query[i] = list(map(int, input().split()))
stack = []
for i in range(1, M + 1):
    stack.append([i])


def calc(arr, query):
    res = 0
    for q in query:
        a, b, c, d = q
        if arr[b - 1] - arr[a - 1] == c:
            res += d
    return res


ans = 0
while stack:
    arr = stack.pop()
    if len(arr) == N:
        val = calc(arr, query)
        if val > ans:
            ans = val
        continue
    for i in range(arr[-1], M + 1):
        stack.append(arr + [i])
print(ans)

N, M, Q = list(map(int, input().split()))
query = [None] * Q
for i in range(Q):
    query[i] = list(map(int, input().split()))


def calc(arr, query):
    res = 0
    for a, b, c, d in query:
        if arr[b - 1] - arr[a - 1] == c:
            res += d
    return res


ans = 0
import itertools

for arr in itertools.combinations_with_replacement(list(range(1, M + 1)), N):
    val = calc(arr, query)
    if ans < val:
        ans = val
print(ans)

-# 10個の数列で、A_i <= A_i+1となる組み合わせ（最大10）は -# [1,1,1,1,1,1,1,1,1,1]のどこに10個のUPを入れるかの組み合わせであり -# 20C10 = 184756 -# この組み合わせに対して最大50のクエリを試すと、9237800通り -# 全探索する -stack = [] -for i in range(1, M + 1): -    stack.append([i]) -    for q in query: -        a, b, c, d = q +    for a, b, c, d in query: -while stack: -    arr = stack.pop() -    if len(arr) == N: -        val = calc(arr, query) -        if val > ans: -            ans = val -        continue -    for i in range(arr[-1], M + 1): -        stack.append(arr + [i]) +import itertools + +for arr in itertools.combinations_with_replacement(list(range(1, M + 1)), N): +    val = calc(arr, query) +    if ans < val: +        ans = val