2 0
 100000 0
 8 9
1 2
2 3
3 4
4 1
5 6
6 7
7 8
8 5
6 8
 2 1
1 2
 11 9
5 9
8 5
11 3
11 1
3 4
7 11
3 1
11 2
7 2
 7 9
7 3
7 4
1 2
2 3
3 1
3 4
4 5
5 6
6 4
 7 5
5 4
7 3
7 1
6 7
3 1
 7 8
1 2
2 3
3 4
4 1
3 5
5 6
6 7
7 3
 6 9
1 2
2 3
1 4
4 2
5 2
5 3
4 5
6 4
6 5
 7 9
1 2
2 4
4 3
3 1
2 3
4 5
5 6
6 7
7 4
 1 0
 6 7
1 2
2 3
3 1
3 4
4 5
5 6
6 4
 4 5
1 2
2 3
3 4
4 1
1 3
 100000 3
99998 99999
99999 100000
100000 99998

0

 0

 4
1 2 3 4 
 0

 6
3 4 6 7 8 9 
 9
1 2 3 4 5 6 7 8 9 
 3
2 3 5 
 8
1 2 3 4 5 6 7 8 
 0

 4
6 7 8 9 
 0

 6
1 2 3 5 6 7 
 0

 3
1 2 3 

#include <bits/stdc++.h>
using namespace std;
vector<int> G[100005];
map<pair<int, int>, pair<int, int>> num;
int in[100005], low[100005], dt;
stack<pair<int, int>> st;
set<int> bel[100005];
int cto, csz[100005];
void dfs(int now, int pa) {
  in[now] = low[now] = ++dt;
  for (int i : G[now]) {
    if (i == pa) continue;
    st.push({now, i});
    if (in[i]) {
      low[now] = min(low[now], in[i]);
    } else {
      dfs(i, now);
      low[now] = min(low[now], low[i]);
      if (low[i] == in[now]) {
        int tag = 0;
        do {
          auto p = st.top();
          st.pop();
          if (p.first == now || p.second == now) ++tag;
          bel[p.first].insert(cto);
          bel[p.second].insert(cto);
          auto it = num.find(p);
          if (it == num.end()) {
            swap(p.first, p.second);
            it = num.find(p);
          }
          it->second.second = cto;
          --csz[cto];
        } while (tag < 2);
        ++cto;
      }
    }
  }
}
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0, u, v; i < m; ++i) {
    cin >> u >> v;
    G[u].push_back(v);
    G[v].push_back(u);
    num[make_pair(u, v)] = {i + 1, -1};
  }
  for (int i = 1; i <= n; ++i) {
    if (in[i]) continue;
    dfs(i, i);
  }
  for (int i = 1; i <= n; ++i)
    for (int j : bel[i]) ++csz[j];
  set<int> ans;
  for (auto &p : num) {
    if (p.second.second == -1) continue;
    if (csz[p.second.second] == 0) ans.insert(p.second.first);
  }
  cout << ans.size() << endl;
  for (int i : ans) cout << i << " ";
}
