#include <stdio.h>
int max(int a, int b){
  if(a>b)return a;
  else return b;
}
int a[50][4];
int n,m,q;
int ans=0;
int dfs(int res[], int pt, int max_res){
  if(max_res>m)return 0;
  if(pt==n){
    int tmp=0;
    /*
    for(int i=0;i<n;i++){
      printf("%d ", res[i]);
    }
    printf("\n");*/
    for(int j = 0; j<q; j++){
      if(res[a[j][1]-1]-res[a[j][0]-1]==a[j][2]){
        tmp+=a[j][3];
      }

    }
    //printf("tmp:%d\n", tmp);

    ans = max(ans, tmp);
    return ans;
  }
  //ptより大きい数字を選んで再起、選ばず再起の二通り
  int k = pt+1;
  for(int i=max_res; i<11; i++){
    res[pt]=i;
    dfs(res, k, i);
  }
  return ans;
}
int main(){
  int i;
  int res[10];
  int used[10];
  for(i=0;i<10;i++)res[i]=used[i]=0;
  res[0]=used[0]=1;
  scanf("%d %d %d", &n, &m, &q);
  for(i=0;i<q;i++){
    scanf("%d %d %d %d", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
  }
  int pt=1;
  printf("%d\n", dfs(res, pt, 1));
  //長さnの整数列を作ってその整数列に対して得点を見ていく漢字の全探索

  return 0;
}
