1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <bits/stdc++.h>

using namespace std;

const int maxN = 1000 * 1000;

int t[3][maxN + 2];
int suma[3][maxN + 2];

void dodaj(int a, int b, int k)
{
	t[k][a] ++;
	t[k][b + 1] --;
	return;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	int N, M;
	cin >> N >> M;
	
	for(int i = 0; i < M; i++){
		int a, b, c;
		cin >> a >> b >> c;
		dodaj(a, b, c - 1);
	}
	
	for(int i = 1; i <= N; i++){
		for(int j = 0; j < 3; j++){
			suma[j][i] = suma[j][i - 1] + t[j][i];
		}
	}
	
	int wynik = 0;
	for(int i = 1; i <= N; i++){
		if(suma[0][i] > 0 && suma[1][i] > 0 && suma[2][i] <= 0)
			wynik ++;
	}
	
	cout << wynik << '\n';
	return 0;
}