#include <bits/stdc++.h>
using namespace std;
const int N=5e4+10;
int t[N],X[N],Y[N];
int n,k;
int par[N*3],r[N*3];
void init(int m) {
for(int i=0;i<m;i++) {
par[i]=i;
r[i]=0;
}
}
int find(int x) {
if(par[x]==x) return x;
else return par[x]=find(par[x]);
}
bool same(int x,int y) {
return find(x)==find(y);
}
void unite(int x,int y) {
x=find(x);y=find(y);
if(x==y) return;
if(r[x]<r[y]) par[x]=y;
else {
par[y]=x;
if(r[x]==r[y]) r[x]++;
}
}
void solve() {
init(n*3);
int ans=0;
for(int i=0;i<k;i++) {
int x=X[i]-1,y=Y[i]-1;
if(x<0 || x>=n || y<0 || y>=n) {
ans++;
continue;
}
if(t[i]==1) {
if(same(x,y+n) || same(x,y+2*n)) ans++;
else {
unite(x,y);
unite(x+n,y+n);
unite(x+2*n,y+2*n);
}
}
else {
if(same(x,y) || same(x,y+2*n)) ans++;
else {
unite(x,y+n);
unite(x+n,y+2*n);
unite(x+2*n,y);
}
}
}
cout<<ans<<endl;
}
int main() {
cin>>n>>k;
for(int i=0;i<k;i++) cin>>t[i]>>X[i]>>Y[i];
solve();
return 0;
}