#include<stdio.h>
#define min(a,b) ((a<=b)?a:b)
#define inf 0x3f3f3f3f
#define N 1001
#define M 10001
struct leg{
int i,nr;
} a[N][N];
int t[N],s[N],cr[N],c[N],i,j,n,m,k,l,p,x,y,z,at[2][N],cap[N][N],sol[M];
FILE *in,*out;
int atinge(){
int p,u,i,j,k,l;
for(i=1;i-n-1;i++)
s[i]=1,cr[i]=0;
p=u=1;c[1]=1;s[1]=0;cr[1]=inf;
while(p-u-1){
i=c[p++];
for(j=1;j-a[i][0].i-1;j++)
if(s[(l=a[i][j].i)]&&cap[i][l]){
c[++u]=l;t[l]=i;s[l]=0;
cr[l]=min(cr[i],cap[i][l]);
if(l-n)
continue;
return cr[n];
}
}
return 0;
}
void intoarce(int v){
int i,j,l;
i=n;
while(i-1){
j=t[i];
cap[j][i]-=v;cap[i][j]+=v;
i=j;
}
}
void coada(int ss,int v){
int p,u,i,j,l;
for(i=1;i-n-1;i++)
s[i]=1;
p=u=1;c[1]=ss;s[ss]=0;t[ss]=0;at[v][ss]=1;
while(p-u-1){
i=c[p++];
for(j=1;j-a[i][0].i-1;j++)
if(s[(l=a[i][j].i)]&&cap[i][l]&&cap[l][i]){
c[++u]=l;s[l]=0;at[v][l]=1;
}
}
}
int main(){
in=fopen("critice.in","rt");
out=fopen("critice.out","wt");
fscanf(in,"%d%d",&n,&m);
for(i=1;i-m-1;i++){
fscanf(in,"%d%d%d",&x,&y,&z);
a[x][++a[x][0].i].i=y;
cap[x][y]=z;
a[x][a[x][0].i].nr=i;
a[y][++a[y][0].i].i=x;
cap[y][x]=z;
a[y][a[y][0].i].nr=i;
}
while((l=atinge()))
intoarce(l);
coada(1,0);
coada(n,1);
k=0;
for(i=1;i-n-1;i++)
for(j=1;j-a[i][0].i-1;j++)
if((at[0][i]&&at[1][(l=a[i][j].i)]&&!at[1][i]&&!at[0][l])||(at[1][i]&&at[0][l]&&!at[0][i]&&!at[1][l]))
sol[a[i][j].nr]=1,k++;
fprintf(out,"%d\n",k);
for(i=1;i-m-1;i++)
if(sol[i])
fprintf(out,"%d\n",i);
return 0;
}