#include <stdio.h>

int n, m, q, a[50], b[50], c[50], d[50], A[10];

// 今の状態で k 番目以降を埋めたとき、答えの最大値
int dfs(int k) {
  int res = 0;
  if (k == n)
    for (int i = 0; i < q; i++)
      res += d[i] * (A[b[i]] - A[a[i]] == c[i]);
  else if (k == 0)
    for (A[0] = 1; A[0] <= m; A[0]++) {
      int r = dfs(1);
      if (r > res) res = r;
    }
  else
    for (A[k] = A[k-1]; A[k] <= m; A[k]++) {
      int r = dfs(k + 1);
      if (r > res) res = r;
    }
  return res;
}

int main(void){
    scanf("%d%d%d", &n, &m, &q);
    for (int i = 0; i < q; i++) {
      scanf("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
      a[i]--; b[i]--;
    }
    printf("%d\n", dfs(0));
}
