#include <cstdio>#include <cstring>#include <vector>#include <cstdlib>#include <algorithm>usingnamespacestd;
constint maxn = 110;
struct Rectangle
{
int x, y, p, d;
void read()
{
scanf("%d%d%d%d", &x, &y, &p, &d);
if (d == 0) y--; if (d == 2) x--; if (d == 3) x--, y--;//神奇的句子,不加样例过不了,加了ac不了,平生第一次见到
}
};
Rectangle re[maxn];
int n, s;
int fun(int x)
{
std::vector<int> v;
for (int i = 1; i <= s; i++)
{
int dir = (re[i].d == 0 || re[i].d == 3 ? -1 : 1), len = abs(x - re[i].x);;
if (re[i].x > x && (re[i].d == 0 || re[i].d == 1)) continue;
if (re[i].x < x && (re[i].d == 2 || re[i].d == 3)) continue;
if (re[i].p <= len) continue;
int l = re[i].y + dir * (re[i].p - len - 1), r = re[i].y;
if (l > r) swap(l, r);
l--; l = max(-1, l), r = min(r, n - 1);
v.push_back(l), v.push_back(r);
}
sort(v.begin(), v.end());
int ans = 0;
for (int i = 1; i < v.size(); i += 2)
ans += v[i] - v[i - 1];
return ans;
}
int main(int argc, charconst *argv[])
{
while (scanf("%d%d", &n, &s) == 2)
{
for (int i = 1; i <= s; i++)
re[i].read();
int ans = 0;
for (int i = 0; i < n; i++)
ans += fun(i);
printf("%d\n", ans);
}
return0;
}