1 #include<cstdio>
2 #include<iostream>
3 #include<algorithm>
4
5 using namespace std;
6
7 int f[1000005];
8 int cnt;
9
10 inline int read(){
11 int num = 0;
12 char c = getchar();
13 while(c < '0' || c > '9') c = getchar();
14 while(c >= '0' && c <= '9'){
15 num = num * 10 + c - '0';
16 c = getchar();
17 }
18 return num;
19 }
20
21 inline int find(int x){
22 if(f[x] != x)
23 f[x] = find(f[x]);
24 return f[x];
25 }
26
27 inline void unity(int a, int b){
28 int aa = find(a), bb = find(b);
29 if(aa != bb){
30 f[aa] = bb;
31 }
32 }
33
34 int main(){
35 int n = read(), k = read();
36 for(int i = 1; i <= n * 3; i++) f[i] = i;
37 for(int i = 1; i <= k; i++){
38 int a = read(), x = read(), y = read();
39 if(x > n || y > n){
40 cnt++;
41 continue;
42 }
43 if(a == 1){
44 if(find(x + n) == find(y) || find(x + 2 * n) == find(y)){
45 cnt++;
46 continue;
47 }
48 unity(x, y); unity(x + n, y + n); unity(x + n * 2, y + n * 2);
49 }
50 if(a == 2){
51 if(x == y){
52 cnt++;
53 continue;
54 }
55 if(find(x) == find(y) || find(x + 2 * n) == find(y)){
56 cnt++;
57 continue;
58 }
59 unity(x, y + 2 * n); unity(x + n, y); unity(x + 2 * n, y + n);
60 }
61 }
62 printf("%d", cnt);
63 return 0;
64 }