#include<stdio.h>
int n,k,D,sum=0;
int a[50005];
int kind[50005];
int find(int x)
{
if(x==a[x]) return x;
int t=a[x];
a[x]=find(t);
kind[x]=(kind[x]+kind[t])%3;
return a[x];
}
void zuhe(int x,int y,int d)
{
int r1=find(x);
int r2=find(y);
a[r1]=r2;//合并两个节点
kind[r1]=(3-kind[x]+d+kind[y])%3;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<=n;++i)
{
a[i]=i;
kind[i]=0;
}
for(int i=0;i<k;++i)
{
int x,y;
scanf("%d%d%d",&D,&x,&y);
if(x>n||y>n||(D==2&&x==y)) sum++;
else
{
int r1=find(x);
int r2=find(y);
if(r1==r2)
{
if((kind[x]-kind[y]+3)%3!=D-1)
{
sum++;
}
}
else
{
zuhe(x,y,D-1);
}
}
}
printf("%d",sum);
return 0;
}
/**************************************************************
Problem: 2238
User: admin
Language: C
Result: Accepted
Time:147 ms
Memory:1536 kb
****************************************************************/