#include <stdio.h>
#include <string.h>
#include <limits.h>
#define MN (1000)
#define MM (10000)
#define MIN(a, b) (a < b? a : b)
int c[MN][MN], f[MN][MN], g[MN][MN], p[MN], m[MN], q[MN], front, back;
int N, M, F;
int edge[MM][2];
int bfs(int s, int t)
{
int n1, n2, i;
memset(m, 0, sizeof(m)); memset(p, -1, sizeof(p));
front = back = 0; m[s] = LONG_MAX; p[s] = s;
for(q[back ++] = s; front < back; ++ front)
for(n1 = q[front], i = 1; i <= g[n1][0]; ++ i) if(p[n2 = g[n1][i]] == -1 && c[n1][n2]-f[n1][n2] > 0) {
p[n2] = n1; m[n2] = MIN(m[n1], c[n1][n2]-f[n1][n2]);
if(n2 != t)
q[back ++] = n2;
else return m[t];
}
return m[t];
}
void ek()
{
int n1, n2;
for(F = 0; bfs(0, N-1); F += m[N-1]) for(n1 = N-1, n2 = p[n1]; n1; n1 = n2, n2 = p[n1])
f[n2][n1] += m[N-1], f[n1][n2] -= m[N-1];
}
void bfs2(int s)
{
int n1, n2, i;
front = back = 0; m[s] = 1;
for(q[back ++] = s; front < back; ++ front)
for(n1 = q[front], i = 1; i <= g[n1][0]; ++ i) if(m[n2 = g[n1][i]] != 1 && c[n1][n2]-f[n1][n2] > 0)
m[n2] = 1, q[back ++] = n2;
}
void bfs3(int s)
{
int n1, n2, i;
front = back = 0; m[s] = 2;
for(q[back ++] = s; front < back; ++ front)
for(n1 = q[front], i = 1; i <= g[n1][0]; ++ i) if(m[n2 = g[n1][i]] != 2 && c[n2][n1]-f[n2][n1] > 0)
m[n2] = 2, q[back ++] = n2;
}
int main()
{
int i, j, k, l;
freopen("critice.in", "r", stdin);
freopen("critice.out", "w", stdout);
scanf("%d %d", &N, &M);
for(k = 0; k < M; ++ k) {
scanf("%d %d %d", &i, &j, &l); -- i; -- j;
c[i][j] = c[j][i] = l;
g[i][++ g[i][0]] = j;
g[j][++ g[j][0]] = i;
edge[k][0] = i; edge[k][1] = j;
}
/*
for(i = 0; i < N; ++ i, printf("\n")) for(printf("%d:", i), j = 1; j <= g[i][0]; ++ j)
printf(" %d (%d)", g[i][j], c[i][g[i][j]]);
*/
ek();
/*
for(printf("%d\n", F), i = 0; i < N; ++ i, printf("\n")) for(j = 0; j < N; ++ j)
printf("%d(%d) ", f[i][j], c[i][j]);
*/
memset(m, 0, sizeof(m));
bfs2(0);
bfs3(N-1);
for(front = back = k = 0; k < M; ++ k) {
i = edge[k][0]; j = edge[k][1];
if((m[i] == 1 && m[j] == 2) || (m[i] == 2 && m[j] == 1))
q[back ++] = k;
}
/*
for(i = 0; i < N; ++ i)
printf("%d ", m[i]); printf("\n");
*/
for(printf("%d\n", back); front < back; ++ front)
printf("%d\n", q[front]+1);
return 0;
}