#include <stdio.h>
#include <string.h>
#define NMAX 1002
#define NUME "critice"
FILE *in=fopen(NUME".in","r"),*out=fopen(NUME".out","w");
int f[NMAX][NMAX],c[NMAX][NMAX],q[NMAX],t[NMAX],n,m,flow,t2[NMAX];
short int v[NMAX],v2[NMAX];
struct muchie{
int x,y;
};
muchie a[10002];
inline int min(int a,int b){return a<b?a:b;}
inline int abs(int a){return a>0?a:(-1)*a;}
int citire(){
int i,z;
fscanf(in,"%d%d",&n,&m);
for(i=1;i<=m;i++){
fscanf(in,"%d%d%d",&a[i].x,&a[i].y,&z);
c[a[i].x][a[i].y]=z;
c[a[i].y][a[i].x]=z;
}
return 0;
}
int bfs(){
int p,u=0,nod;
short int j;
memset(t,0,sizeof(t));
memset(q,0,sizeof(q));
q[++u]=1;t[1]=-1;
for(p=0;p<=u;){
nod=q[++p];
for(j=1;j<=n;j++){
if(!t[j]&&c[nod][j]>f[nod][j])
{
q[++u]=j;
t[j]=nod;
if(j==n)return 1;
}
}
}
return 0;
}
int bfs1(){
int p,u=0,nod;
short int j;
// memset(t,0,sizeof(t));
memset(q,0,sizeof(q));
q[++u]=1;v[1]=1;
for(p=0;p<=u;){
nod=q[++p];
for(j=1;j<=n;j++){
if(!v[j]&&c[nod][j]>abs(f[nod][j]))
{
q[++u]=j;
v[j]=1;
// if(j==n)return 1;
}
}
}
return 0;
}
int bfs2(){
int p,u=0,nod;
short int j;
// memset(t2,0,sizeof(t));
memset(q,0,sizeof(q));
q[++u]=n;v2[n]=1;
for(p=0;p<=u;){
nod=q[++p];
for(j=1;j<=n;j++){
if(!v2[j]&&c[nod][j]>abs(f[nod][j]))
{
q[++u]=j;
v2[j]=1;
// if(j==n)return 1;
}
}
}
return 0;
}
void dinic(){
int rez;
short int i,j;
for(;bfs();){
for(i=1;i<=n;i++){
if(c[i][n]<=f[i][n]||t[i]<=0)continue;
rez=c[i][n]-f[i][n];
for(j=i;j!=1;j=t[j])rez=min(rez,c[t[j]][j]-f[t[j]][j]);
if(!rez)continue;
f[i][n]+=rez;
f[n][i]-=rez;
for(j=i;j!=1;j=t[j])
{
f[t[j]][j]+=rez;
f[j][t[j]]-=rez;
}
flow+=rez;
}
}
}
void afisare(){
int nr=0;
short i;
bfs1();
// bfs2();
for(i=1;i<=m;i++){
if((v2[a[i].x]+v2[a[i].y]>=1)&&(v[a[i].x]+v[a[i].y]>=1)&&c[a[i].x][a[i].y]==abs(f[a[i].x][a[i].y]))nr++;
}
fprintf(out,"%d\n",nr);
for(i=1;i<=m;i++){
if((v2[a[i].x]+v2[a[i].y]>=1)&&(v[a[i].x]+v[a[i].y]>=1)&&c[a[i].x][a[i].y]==abs(f[a[i].x][a[i].y]))
fprintf(out,"%d\n",i);
}
}
int main(){
citire();
dinic();
// printf("(%d)",flow);
//int i,j;
/*
for(i=1;i<=n;i++){
printf("\n");
for(j=1;j<=n;j++) printf("%d ",f[i][j]);
}
*/
afisare();
fclose(in);
fclose(out);
return 0;
}