#include <bits/stdc++.h>
using namespace std;
const int nmax = 55;
int dp[nmax][nmax][nmax], mx[nmax][nmax][nmax];
int izolat[nmax][nmax];
int st[nmax], dr[nmax], lim[nmax], c[nmax], cost[nmax];
int n, h, m, len, i, mid, h1, r, val, ans;
int main() {
  cin >> n >> h >> m;
  for (i = 1; i <= m; i++) {
    cin >> st[i] >> dr[i] >> lim[i] >> c[i];
    if (st[i] == dr[i]) {
      izolat[st[i]][lim[i] + 1] += c[i];
    }
  }
  for (i = 1; i <= n; i++) {
    for (h1 = 0; h1 <= h; h1++) {
      if (h1) izolat[i][h1] += izolat[i][h1 - 1];
      dp[1][i][h1] = h1 * h1 - izolat[i][h1];
      if (h1)
        mx[1][i][h1] = max(mx[1][i][h1 - 1], dp[1][i][h1]);
      else
        mx[1][i][h1] = dp[1][i][h1];
    }
  }
  for (len = 1; len <= n; len++)
    for (i = 1; i <= n - len + 1; i++) {
      for (mid = 1; mid < len; mid++) {
        for (r = 0; r <= h; r++) cost[r] = 0;
        for (r = 1; r <= m; r++)
          if (st[r] >= i && dr[r] <= i + len - 1 && st[r] <= i + mid - 1 &&
              dr[r] >= i + mid)
            cost[lim[r] + 1] += c[r];
        for (r = 1; r <= h; r++) cost[r] += cost[r - 1];
        for (h1 = 0; h1 <= h; h1++) {
          val = max(dp[mid][i][h1] + mx[len - mid][i + mid][h1],
                    mx[mid][i][h1] + dp[len - mid][i + mid][h1]);
          if (val - cost[h1] > dp[len][i][h1]) dp[len][i][h1] = val - cost[h1];
        }
      }
      mx[len][i][0] = dp[len][i][0];
      for (h1 = 1; h1 <= h; h1++)
        mx[len][i][h1] = max(mx[len][i][h1 - 1], dp[len][i][h1]);
    }
  cout << mx[n][1][h];
  return 0;
}
