#include <bits/stdc++.h>
struct er {
  int l;
  int mon;
  int time;
};
struct man {
  er sec[105];
  int time;
  int money;
};
int main() {
  man s[105];
  int n, m;
  int i, j;
  int a, b;
  int res = 0;
  while (scanf("%d%d", &n, &m) != EOF) {
    memset(s, 0, sizeof(s));
    res = 0;
    a = b = 0;
    for (i = 0; i < m; i++) {
      scanf("%d%d%d%d", &a, &b, &s[i].time, &s[i].money);
      for (j = a; j <= b; j++) {
        s[i].sec[j].l = j;
        s[i].sec[j].mon = s[i].money;
        s[i].sec[j].time = s[i].time;
      }
    }
    for (i = 1; i < m; i++) {
      for (j = 1; j <= n; j++) {
        if (s[i].sec[j].l > s[i - 1].sec[j].l) {
          s[i].sec[j].l = s[i].sec[j].l;
          s[i].sec[j].mon = s[i].sec[j].mon;
          s[i].sec[j].time = s[i].sec[j].time;
        } else if (s[i].sec[j].l < s[i - 1].sec[j].l) {
          s[i].sec[j].l = s[i - 1].sec[j].l;
          s[i].sec[j].mon = s[i - 1].sec[j].mon;
          s[i].sec[j].time = s[i - 1].sec[j].time;
        } else {
          if (s[i].sec[j].time > s[i - 1].sec[j].time) {
            s[i].sec[j].l = s[i - 1].sec[j].l;
            s[i].sec[j].mon = s[i - 1].sec[j].mon;
            s[i].sec[j].time = s[i - 1].sec[j].time;
          } else if (s[i].sec[j].time < s[i - 1].sec[j].time) {
            s[i].sec[j].l = s[i].sec[j].l;
            s[i].sec[j].mon = s[i].sec[j].mon;
            s[i].sec[j].time = s[i].sec[j].time;
          } else {
            s[i].sec[j].l = s[i].sec[j].l;
            s[i].sec[j].mon = s[i - 1].sec[j].mon;
            s[i].sec[j].time = s[i - 1].sec[j].time;
          }
        }
      }
    }
    for (j = 1; j <= n; j++) {
      if (s[m - 1].sec[j].l != 0) res += s[m - 1].sec[j].mon;
    }
    printf("%d\n", res);
  }
  return 0;
}
