#include<bits/stdc++.h>
#define maxn 10005
#define pb push_back
using namespace std;
int n,m,cnt,ans[maxn],sum[maxn],cf[maxn],s[maxn],st,f[maxn],dep[maxn],res[maxn];
vector<int>to[maxn],num[maxn];
bool vis[maxn],vis2[maxn];
inline void dfs(int u,int fa){
f[u]=fa,dep[u]=dep[fa]+1;
for(int i=0;i<to[u].size();i++){
int v=to[u][i];
if(v==fa)continue;
if(vis[v]){
if(dep[u]>dep[v])continue;
if((dep[u]-dep[v])%2==0)cnt++,cf[v]++,cf[u]--,res[num[u][i]]=1;
else cf[v]--,cf[u]++,res[num[u][i]]=-1;
}
else vis[v]=1,dfs(v,u);
}
}
inline void dfs2(int u){
for(int i=0;i<to[u].size();i++){
int v=to[u][i];
if(!vis2[v])vis2[v]=1,sum[v]=ans[num[u][i]]=sum[u]+cf[u],dfs2(v);
}
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int u,v,i=1;i<=m;i++)cin>>u>>v,to[u].pb(v),to[v].pb(u),num[u].pb(i),num[v].pb(i);
for(int i=1;i<=n;i++)if(!vis[i])vis[i]=1,vis2[i]=1,dfs(i,0),dfs2(i);
for(int i=1;i<=m;i++)if(sum[i]+res[i]==cnt||cnt==0)s[++st]=i;
cout<<st<<'\n';
for(int i=1;i<=st;i++)cout<<s[i]<<' ';
}