#include <stdio.h>
#define max(a, b) ((a)<(b) ? (b) : (a))

int q;
int a[51], b[51], c[51], d[51];
int ans = 0;

void dfs(int array[], int m, int n){
  if(array[0] == n){
    int sum = 0;
    for(int i=0; i<q; i++){
      if(array[b[i]]-array[a[i]] == c[i]){
	sum = sum + d[i];
      }
    }
    ans = max(ans, sum);    
    return;
  }
  int start = (array[0]==0 ? 1 : array[array[0]]);
  for(int i=start; i<=m; i++){
    array[++array[0]] = i;
    dfs(array, m, n);
    array[0]--;
  }
}

int main(){
  int array[12] = {0};
  int n, m;  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]);
  }
  dfs(array, m, n);
  printf("%d\n", ans);
  return 0;
}
