/* Ivan Nicolae - Critice - Infoarena */
#include <stdio.h>
#include <string.h>
#define NMAX 1001
#define MMAX 10001
#define INPUT "critice.in"
#define OUTPUT "critice.out"
#define Infinity (0x3f3f3f3f)
int i,j,n,m,G[NMAX][NMAX],Cap[NMAX][NMAX],Flux[NMAX][NMAX],DRez[NMAX];
int C[NMAX],up[NMAX],Mark[NMAX],unu[NMAX],SOL[MMAX],doi[NMAX];
#define old (C[st])
void GetDrumRez(int S, int D)
{
int i,st=0,end,poz=0,j;
memset(C,0,sizeof(C));
memset(up,0,sizeof(up));
memset(Mark,0,sizeof(Mark));
C[++st]=S; up[st]=0; end=1; Mark[S]=1;
for (st=1;st<=end;st++)
{
for (j=1;j<=n;j++)
if (!Mark[j] && Cap[old][j]-Flux[old][j]>0)
{
C[++end]=j;
up[end]=st;
Mark[j]=1;
if (j==D) { poz=end; break; }
}
}
while (poz)
{
DRez[++DRez[0]]=C[poz];
poz=up[poz];
}
}
#define back (DRez[i+1])
#define front (DRez[i])
int GetFlux(int S, int D)
{
int gasit=1,i;
while (gasit)
{
memset(DRez,0,sizeof(DRez));
GetDrumRez(S,D);
if (!DRez[0])
gasit=0;
else {
int md=Infinity;
for (i=DRez[0]-1;i>=1;i--)
if (Cap[back][front]-Flux[back][front]<md)
md=Cap[back][front]-Flux[back][front];
for (i=DRez[0]-1;i>=1;i--)
{
Flux[back][front]+=md;
Flux[front][back]-=md;
}
}
}
int Fluxu=0;
for (i=1;i<=n;i++)
if (Flux[i][D])
Fluxu+=Flux[i][D];
return Fluxu;
}
void BFS(int S, int unu[])
{
int i,st,end,j,x=1;
memset(C,0,sizeof(C));
C[1]=S; st=1; end=1; unu[S]=x;
for (st=1;st<=end;st++)
{
for (j=1;j<=n;j++)
if (Cap[C[st]][j]-Flux[C[st]][j]>0 && unu[j]!=x)
{
C[++end]=j;
unu[j]=x;
}
}
}
void BFS2(int S, int unu[])
{
int i,st,end,j,x=1;
memset(C,0,sizeof(C));
C[1]=S; st=1; end=1; unu[S]=x;
for (st=1;st<=end;st++)
{
for (j=1;j<=n;j++)
if (Cap[j][C[st]]-Flux[j][C[st]]>0 && unu[j]!=x)
{
C[++end]=j;
unu[j]=x;
}
}
}
int main()
{
freopen(INPUT,"r",stdin);
freopen(OUTPUT,"w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
Cap[x][y]=c; Cap[y][x]=c;
}
int Fmax=GetFlux(1,n);
BFS(1,unu);
BFS2(n,doi);
fseek(stdin,0,SEEK_SET);
int rez=0;
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
if (unu[x] && doi[y] && Cap[x][y]-Flux[x][y]==0)
{ rez++; SOL[++SOL[0]]=i; }
else
if (doi[x] && unu[y] && Cap[y][x]-Flux[y][x]==0)
{ rez++; SOL[++SOL[0]]=i; }
}
printf("%d\n",rez);
for (i=1;i<=SOL[0];i++)
printf("%d\n",SOL[i]);
fclose(stdin);
fclose(stdout);
return 0;
}