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;
const int C = 500001;
vector<vector<int> > gr(C), E(C);
int ij[C], ji[C], a, b, n, m;
int s[C], sE[C], low[C], pre[C], nV[C], nE[C], par[C], cor[C], corn;
bool ch[C], chE[C];
int main() {
  int i, j, is = 1, iE = 0, iV = 1, ip = 2, k, e, vn, en;
  scanf("%d %d", &n, &m);
  for (int z = 0; z < m; z++)
    scanf("%d %d", &a, &b), gr[a].push_back(b), gr[b].push_back(a),
        E[a].push_back(z), E[b].push_back(z), ij[a]++, ij[b]++;
  for (i = 1; i <= n; i++) ji[i] = ij[i];
  for (j = 1; j <= n; j++) {
    if (ch[j] == 0) {
      s[0] = j, ch[j] = 1;
      low[j] = pre[j] = 1, iV = 1, iE = 0, ip = 2, is = 1;
      while (is > 0) {
        a = s[is - 1];
        if (ij[a] > 0) k = gr[a][ij[a] - 1], e = E[a][ij[a] - 1];
        if (ij[a] > 0 && ch[gr[a][ij[a] - 1]] == 1) {
          if (chE[e] == 0) {
            chE[e] = 1;
            sE[iE] = e, iE++;
          }
          if (k != par[a]) low[a] = min(low[a], pre[k]);
          ij[a]--;
        } else if (ij[a] > 0 && ch[gr[a][ij[a] - 1]] == 0) {
          ch[k] = 1, chE[e] = 1;
          par[k] = a;
          nV[k] = iV, nE[k] = iE, iV++;
          sE[iE] = e, iE++;
          s[is] = k, low[k] = pre[k] = ip, is++, ip++;
          ij[a]--;
        } else {
          if (low[par[a]] > low[a]) low[par[a]] = low[a];
          if (low[a] >= pre[par[a]]) {
            vn = iV - nV[a] + 1, en = iE - nE[a];
            if (en == vn) {
              for (i = nE[a]; i < iE; i++) cor[sE[i]] = 1, corn++;
            }
            iV = nV[a], iE = nE[a];
          }
          is--;
        }
      }
    }
  }
  printf("%d\n", corn);
  for (i = 0; i < m; i++)
    if (cor[i] == 1) printf("%d ", i + 1);
  return 0;
}
