#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 + 5;
long long n,q;
struct DSU
{
long long lab[2*MaxN];
void init()
{
for(long long i=0; i<=2*n+1; i++)
{
lab[i]=-1;
}
}
long long get_root(long long u)
{
if(lab[u]<0) return u;
return lab[u]=get_root(lab[u]);
}
void unite(long long u,long long v)
{
long long x=get_root(u);
long long y=get_root(v);
if(x==y) return;
if(lab[x]>lab[y]) swap(x,y);
lab[x]+=lab[y];
lab[y]=x;
}
bool check(long long u,long long v)
{
return get_root(u)==get_root(v);
}
};
DSU dsu;
struct QUERY
{
long long l,r,t;
};
QUERY query[MaxN];
void input()
{
cin>>n>>q;
for(long long i=1;i<=q;i++)
{
cin>>query[i].l>>query[i].r>>query[i].t;
}
}
void solve()
{
long long N=n+1;
dsu.init();
for(long long i=1;i<=q;i++)
{
long long l=query[i].l-1;
long long r=query[i].r;
long long t=query[i].t;
if(t==0)
{
if(dsu.check(l,r+N))
{
cout<<i-1;
return;
}
dsu.unite(l,r);
dsu.unite(l+N,r+N);
}
else
{
if(dsu.check(l,r))
{
cout<<i-1;
return;
}
dsu.unite(l,r+N);
dsu.unite(r,l+N);
}
}
cout<<q;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMWU1ICsgNTsKCmxvbmcgbG9uZyBuLHE7CgpzdHJ1Y3QgRFNVCnsKICAgIGxvbmcgbG9uZyBsYWJbMipNYXhOXTsKCiAgICB2b2lkIGluaXQoKQogICAgewogICAgICAgIGZvcihsb25nIGxvbmcgaT0wOyBpPD0yKm4rMTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgbGFiW2ldPS0xOwogICAgICAgIH0KICAgIH0KCiAgICBsb25nIGxvbmcgZ2V0X3Jvb3QobG9uZyBsb25nIHUpCiAgICB7CiAgICAgICAgaWYobGFiW3VdPDApIHJldHVybiB1OwogICAgICAgIHJldHVybiBsYWJbdV09Z2V0X3Jvb3QobGFiW3VdKTsKICAgIH0KCiAgICB2b2lkIHVuaXRlKGxvbmcgbG9uZyB1LGxvbmcgbG9uZyB2KQogICAgewogICAgICAgIGxvbmcgbG9uZyB4PWdldF9yb290KHUpOwogICAgICAgIGxvbmcgbG9uZyB5PWdldF9yb290KHYpOwoKICAgICAgICBpZih4PT15KSByZXR1cm47CgogICAgICAgIGlmKGxhYlt4XT5sYWJbeV0pIHN3YXAoeCx5KTsKCiAgICAgICAgbGFiW3hdKz1sYWJbeV07CiAgICAgICAgbGFiW3ldPXg7CiAgICB9CgogICAgYm9vbCBjaGVjayhsb25nIGxvbmcgdSxsb25nIGxvbmcgdikKICAgIHsKICAgICAgICByZXR1cm4gZ2V0X3Jvb3QodSk9PWdldF9yb290KHYpOwogICAgfQp9OwoKRFNVIGRzdTsKCnN0cnVjdCBRVUVSWQp7CiAgICBsb25nIGxvbmcgbCxyLHQ7Cn07CgpRVUVSWSBxdWVyeVtNYXhOXTsKCnZvaWQgaW5wdXQoKQp7CiAgICBjaW4+Pm4+PnE7CgogICAgZm9yKGxvbmcgbG9uZyBpPTE7aTw9cTtpKyspCiAgICB7CiAgICAgICAgY2luPj5xdWVyeVtpXS5sPj5xdWVyeVtpXS5yPj5xdWVyeVtpXS50OwogICAgfQp9Cgp2b2lkIHNvbHZlKCkKewogICAgbG9uZyBsb25nIE49bisxOwoKICAgIGRzdS5pbml0KCk7CgogICAgZm9yKGxvbmcgbG9uZyBpPTE7aTw9cTtpKyspCiAgICB7CiAgICAgICAgbG9uZyBsb25nIGw9cXVlcnlbaV0ubC0xOwogICAgICAgIGxvbmcgbG9uZyByPXF1ZXJ5W2ldLnI7CiAgICAgICAgbG9uZyBsb25nIHQ9cXVlcnlbaV0udDsKCiAgICAgICAgaWYodD09MCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRzdS5jaGVjayhsLHIrTikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQ8PGktMTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZHN1LnVuaXRlKGwscik7CiAgICAgICAgICAgIGRzdS51bml0ZShsK04scitOKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYoZHN1LmNoZWNrKGwscikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQ8PGktMTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZHN1LnVuaXRlKGwscitOKTsKICAgICAgICAgICAgZHN1LnVuaXRlKHIsbCtOKTsKICAgICAgICB9CiAgICB9CgogICAgY291dDw8cTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBpbnB1dCgpOwogICAgc29sdmUoKTsKfQ==