using namespace std;
#include <set>
#include <map>
#include <list>
#include <deque>
#include <stack>
#include <queue>
#include <cmath>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cstdlib>
#include <utility>
#include <algorithm>
#include <functional>
#define pb push_back
#define sz size
#define f first
#define s second
#define II inline
#define ll long long
#define db double
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define all(v) v.begin() , v.end()
#define C(v) memset((v),0,sizeof((v)))
#define CP(x,y) memcpy((x),(y),sizeof((y)))
#define FORit(it,v) for(it = (v).begin();it != (v).end();++it)
#define mp make_pair
#define IN "critice.in"
#define OUT "critice.out"
#define N_MAX 1<<10
typedef vector< pair<int,int> > VI;
typedef vector< vector <int> > VM;
typedef vector<string> VS;
int S,D,N,M;
vector< vector<int> > A(N_MAX);
int T[N_MAX],C[N_MAX][N_MAX];
bool viz[N_MAX];
VI MV;
II void scan()
{
int x,y,c;
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
scanf("%d%d",&N,&M);
FOR(i,1,M)
{
scanf("%d%d%d\n",&x,&y,&c);
A[x].pb(y);
A[y].pb(x);
C[x][y] = C[y][x] = c;
MV.pb( mp(x,y) );
}
S=1;
D=N;
}
II void BF(int start)
{
int stv[N_MAX];
stv[stv[0]=1] = start;
viz[start] = true;
FOR(i,1,stv[0])
{
int nod = stv[i];
int l = A[nod].sz() - 1;
FOR(j,0,l)
{
int next = A[nod][j];
int aux = (start==S?C[nod][next]:C[next][nod]);
if(!viz[next] && aux)
{
viz[next] = true;
T[next] = nod;
stv[++stv[0]] = next;
}
}
}
}
II int flux()
{
int r;
C(viz);
viz[S] = true;
T[D] = 0;
BF(S);
if(!T[D])
return 0;
FOR(i,1,N)
{
if(!viz[i] || !C[i][D])
continue;
r = C[i][D];
for(int j=i;j!=S && j;j = T[j])
r = min(r, C[ T[j] ][j]);
if(!r)
continue;
C[i][D] -= r;
C[D][i] += r;
for(int j=i; j!= S; j = T[j])
{
C[ T[j] ][j] -= r;
C[j][ T[j] ] += r;
}
}
return 1;
}
II void solve()
{
for(;flux(););
vector<int> sol;
bool vizS[N_MAX],vizD[N_MAX];
BF(S);
CP(vizS,viz);
BF(D);
CP(vizD,viz);
FOR(i,0,M-1)
{
int x = MV[i].f;
int y = MV[i].s;
if( (vizS[x] && vizD[y] && !C[x][y]) || (vizS[y] && vizD[x] && !C[y][x]) )
sol.pb(i+1);
}
int l = sol.sz()-1;
printf("%d\n",l+1);
FOR(i,0,l)
printf("%d\n",sol[i]);
}
int main()
{
scan();
solve();
return 0;
}