#include <cstdio>
#include <string>
#define maxn 1024
#define maxm 10005
int c[maxn][maxn], f[maxn][maxn], a[maxn][maxn], nr[maxn][maxn];
int critice[maxn][maxn], oki[maxn][maxn];
int n, m;
int muchii[maxm][3], sol[maxm];
void citire()
{
freopen("critice.in", "r", stdin);
scanf("%d %d\n", &n, &m);
for(int i=1;i<=m;i++)
{
int p, q, w;
scanf("%d %d %d\n", &p, &q, &w);
c[p][q]=c[q][p]=w;
nr[p][q]=nr[q][p]=i;
a[p][++a[p][0]]=q;
a[q][++a[q][0]]=p;
muchii[i][1]=p;
muchii[i][2]=q;
}
}
int min(int a, int b)
{
if(a<b) return a;
return b;
}
int bfs()
{
int Q[maxn], viz[maxn],pred[maxn], p=1, q=1, u, i;
memset(viz, 0, sizeof(viz));
memset(pred, -1, sizeof(pred));
Q[1]=1;
viz[1]=1;
while(p<=q)
{
u=Q[p++];
for(i=1;i<=a[u][0];i++)
if(!viz[a[u][i]])
if(c[u][a[u][i]]>f[u][a[u][i]])
{
pred[a[u][i]]=u;
viz[a[u][i]]=1;
Q[++q]=a[u][i];
if(a[u][i]==n) goto exit_loop;
}
}
exit_loop:
if(pred[n]==-1) return 0;
int flow=0x3f3f3f3f;
for(i=n ; pred[i]!=-1; i=pred[i])flow=min(flow, c[pred[i]][i]-f[pred[i]][i]);
for(i=n; pred[i]!=-1; i=pred[i])
{
f[pred[i]][i]+=flow;
f[i][pred[i]]-=flow;
}
return flow;
}
int max_flow()
{
int flow=0, p;
while(1)
{
p=bfs();
if(!p) break;
flow+=p;
}
return flow;
}
void bfs2(int s, int d)
{
int Q[maxn], viz[maxn], pred[maxn], p=1, q=1, u, i;
memset(viz, 0,sizeof(viz));
memset(pred, -1, sizeof(pred));
Q[1]=s;
viz[s]=1;
while(p<=q)
{
u=Q[p++];
for(i=1;i<=a[u][0];i++)
if(!viz[a[u][i]])
if(c[u][a[u][i]]>=f[u][a[u][i]])
{
if(pred[u]==-1)
{
if(c[u][a[u][i]]==f[u][a[u][i]]);
else critice[u][a[u][i]]++;
}
else if(c[pred[u]][u]>f[pred[u]][u]) critice[u][a[u][i]]++;
viz[a[u][i]]=1;
Q[++q]=a[u][i];
}
}
}
int verifica( int x, int y)
{
c[x][y]++;
c[y][x]++;
int Q[maxn], viz[maxn],pred[maxn], p=1, q=1, u, i;
memset(viz, 0, sizeof(viz));
memset(pred, -1, sizeof(pred));
Q[1]=1;
viz[1]=1;
while(p<=q)
{
u=Q[p++];
for(i=1;i<=a[u][0];i++)
if(!viz[a[u][i]])
if(c[u][a[u][i]]>f[u][a[u][i]])
{
pred[a[u][i]]=u;
viz[a[u][i]]=1;
Q[++q]=a[u][i];
if(a[u][i]==n) goto exit_loop;
}
}
exit_loop:
c[x][y]--;
c[y][x]--;
if(pred[n]==-1) return 0;
return 1;
}
int main()
{
citire();
max_flow();
int i, j;
for(i=1;i<=m;i++)
{
if(verifica( muchii[i][1],muchii[i][2])) sol[i]=1;
}
freopen("critice.out", "w", stdout);
int nr=0;
for(i=1;i<=m;i++) if(sol[i]) nr++;
printf("%d\n",nr);
for(i=1;i<=m;i++) if(sol[i]) printf("%d\n", i);
return 0;
}