#include <bits/stdc++.h>
using namespace std;
# define rep(i,n) for (int i = 0; i < (n); ++i)

int n, m, q;
vector<int> a, b, c, d;
int ans;


void dfs(vector<int> A) {
    //終了条件
    if(A.size() == n+1) {
        int now = 0; //今のスコア
        rep(i, q) {
            if(A[b[i]] - A[a[i]] == c) now += d[i];
        }
        ans = max(ans, now);
        return;
    }
    
    //再帰ステップ
    //直前の要素の数を追加する
    A.push_back(A.back());
    while(A.back() <= n) {
        dfs(A);
        A.back()++;
    }
}

int main() {
    cin >> n >> m >> q;
    a = b = c = d = vector<int>(q);
    rep(i, q) {
        int a, b, c, d;
        cin >> a[i] >> b[i] >> c[i] >> d[i];
    }
    //要素1つ初期値１の配列を入れ、dfs()内で要素を追加していく
    dfs(vector<int>(1,1));
    cout << ans << endl;
    return 0;
}