#include using namespace std; const int maxn=3e5+7; struct edge{ int u,v,w,id; }e[maxn]; bool cmp(edge u,edge v){ return u.w> _; while (_--){ cin >> n >> m; for (int i=1;i<=m;i++) { scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); e[i].id=i; f[i]=0; } sort(e+1,e+m+1,cmp); for (int i=1;i<=n;i++) pre[i]=i; cnt=0; for (int i=1;i<=m;i++){ int u=ffind(e[i].u),v=ffind(e[i].v); if (u!=v) pre[v]=u,++cnt; if (cnt==n/2) {l=e[i].w;break;} } for (int i=1;i<=n;i++) pre[i]=i; cnt=0; for (int i=m;i>=1;i--){ int u=ffind(e[i].u),v=ffind(e[i].v); if (u!=v) pre[v]=u,++cnt; if (cnt==n/2) {r=e[i].w;break;} } for (int i=1;i<=m;i++) if (e[i].w>=l&&e[i].w<=r) f[e[i].id]=1; for (int i=1;i<=m;i++) printf("%d",f[i]); puts(""); } return 0; }