#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<math.h>
#include<iomanip>
#include<set>
#include<numeric>
#include<cstring>
#include<cstdio>
#include<functional>
#include<bitset>
#include<limits.h>
#include<cassert>
#include<iterator>
#include<complex>
#include<stack>
#include<sstream>
#include<iterator>
#include<list>

using namespace std;

typedef  long long int lint;

#define rep(i, n) for (lint i = 0; i < n; i++)
#define sort(v) sort((v).begin(), (v).end())
#define reverse(v) reverse((v).begin(), (v).end())
#define upper(v,hoge) upper_bound(v.begin(),v.end(),hoge)
#define lower(v,hoge) lower_bound(v.begin(),v.end(),hoge)
#define llower(v,hoge) *lower_bound(v.begin(), v.end(), hoge)
#define lupper(v,hoge) *upper_bound(v.begin(), v.end(), hoge)
#define mp make_pair
#define IP pair<int,int>
#define enld endl

int main() {
	lint N, M, Q;
	cin >> N >> M >> Q;
	vector<lint>A(Q);
	vector<lint>B(Q);
	vector<lint>C(Q);
	vector<lint>D(Q);
	rep(i, Q) {
		cin >> A[i] >> B[i] >> C[i] >> D[i];
	}
	vector<lint>V;
	lint ans = 0;
	lint sum = 0;
	if (N == 2) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				V = { i1,i2 };
				rep(i, Q) {
					if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
						sum += D[i];
					}
				}
				ans = max(ans, sum);
				sum = 0;
			}
		}
	}
	else if (N == 3) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					V = { i1,i2 ,i3};
					rep(i, Q) {
						if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
							sum += D[i];
						}
					}
					ans = max(ans, sum);
					sum = 0;
				}
			}
		}
	}
	else if (N == 4) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					for (lint i4 = i3; i4 <= M; i4++) {
						V = { i1,i2,i3,i4 };
						rep(i, Q) {
							if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
								sum += D[i];
							}
						}
						ans = max(ans, sum);
						sum = 0;
					}
				}
			}
		}
	}
	else if (N == 5) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					for (lint i4 = i3; i4 <= M; i4++) {
						for (lint i5 = i4; i5 <= M; i5++) {
							V = { i1,i2,i3,i4,i5 };
							rep(i, Q) {
								if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
									sum += D[i];
								}
							}
							ans = max(ans, sum);
							sum = 0;
						}
					}
				}
			}
		}
	}
	else if (N == 6) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					for (lint i4 = i3; i4 <= M; i4++) {
						for (lint i5 = i4; i5 <= M; i5++) {
							for (lint i6 = i5; i6 <= M; i6++) {
								V = { i1,i2,i3,i4,i5,i6 };
								rep(i, Q) {
									if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
										sum += D[i];
									}
								}
								ans = max(ans, sum);
								sum = 0;
							}
						}
					}
				}
			}
		}
	}
	else if (N == 7) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					for (lint i4 = i3; i4 <= M; i4++) {
						for (lint i5 = i4; i5 <= M; i5++) {
							for (lint i6 = i5; i6 <= M; i6++) {
								for (lint i7 = i6; i7 <= M; i7++) {
									V = { i1,i2,i3,i4,i5,i6,i7 };
									rep(i, Q) {
										if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
											sum += D[i];
										}
									}
									ans = max(ans, sum);
									sum = 0;
								}
							}
						}
					}
				}
			}
		}
	}
	else if (N == 8) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					for (lint i4 = i3; i4 <= M; i4++) {
						for (lint i5 = i4; i5 <= M; i5++) {
							for (lint i6 = i5; i6 <= M; i6++) {
								for (lint i7 = i6; i7 <= M; i7++) {
									for (lint i8 = i7; i8 <= M; i8++) {
										V = { i1,i2,i3,i4,i5,i6,i7,i8};
										rep(i, Q) {
											if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
												sum += D[i];
											}
										}
										ans = max(ans, sum);
										sum = 0;
									}
								}
							}
						}
					}
				}
			}
		}
	}
	else if (N == 9) {
		for (lint i1 = 1; i1 <= M; i1++) {
			for (lint i2 = i1; i2 <= M; i2++) {
				for (lint i3 = i2; i3 <= M; i3++) {
					for (lint i4 = i3; i4 <= M; i4++) {
						for (lint i5 = i4; i5 <= M; i5++) {
							for (lint i6 = i5; i6 <= M; i6++) {
								for (lint i7 = i6; i7 <= M; i7++) {
									for (lint i8 = i7; i8 <= M; i8++) {
										for (lint i9 = i8; i9 <= M; i9++) {
											V = { i1,i2,i3,i4,i5,i6,i7,i8,i9 };
											rep(i, Q) {
												if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
													sum += D[i];
												}
											}
											ans = max(ans, sum);
											sum = 0;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	else if (N == 10) {
	for (lint i1 = 1; i1 <= M; i1++) {
		for (lint i2 = i1; i2 <= M; i2++) {
			for (lint i3 = i2; i3 <= M; i3++) {
				for (lint i4 = i3; i4 <= M; i4++) {
					for (lint i5 = i4; i5 <= M; i5++) {
						for (lint i6 = i5; i6 <= M; i6++) {
							for (lint i7 = i6; i7 <= M; i7++) {
								for (lint i8 = i7; i8 <= M; i8++) {
									for (lint i9 = i8; i9 <= M; i9++) {
										for (lint i10 = i9; i10 <= M; i10++) {
											V = { i1,i2,i3,i4,i5,i6,i7,i8,i9,i10 };
											rep(i, Q) {
												if (V[B[i] - 1] - V[A[i] - 1] == C[i]) {
													sum += D[i];
												}
											}
											ans = max(ans, sum);
											sum = 0;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	}
	cout << ans << endl;
 }

Measured memory_bytes: 3640