/* Локален грейдър за задачата. Чете от стандартния вход N и M на първия ред, а на
   следващите M реда -- по четири числа T L R C за всяко пръскане. Извиква min_cost
   веднъж и извежда върнатата стойност. */
#include "mold.h"
#include <cstdio>
#include <vector>
int main() {
    int N, M;
    if (scanf("%d %d", &N, &M) != 2) return 0;
    std::vector<int> T(M), L(M), R(M), C(M);
    for (int i = 0; i < M; i++) scanf("%d %d %d %d", &T[i], &L[i], &R[i], &C[i]);
    printf("%lld\n", min_cost(N, T, L, R, C));
    return 0;
}
