#include <bits/stdc++.h>
using namespace std;
const int N = 210;
vector<int> adj[N], comp[N], vc, ord, ans;
int st[N], high[N], indeg[N], cmp[N], start, c;
bool mark[N], on[N];
void Tarjan(int v) {
  mark[v] = 1;
  st[v] = high[v] = start++;
  vc.push_back(v);
  for (int u : adj[v]) {
    if (!mark[u]) {
      Tarjan(u);
      high[v] = min(high[v], high[u]);
    } else if (!on[u])
      high[v] = min(high[v], high[u]);
  }
  if (st[v] == high[v]) {
    while (!vc.empty() && st[vc.back()] >= st[v]) {
      int t = vc.back();
      cmp[t] = c;
      comp[c].push_back(t);
      on[t] = 1;
      vc.pop_back();
    }
    c++;
  }
  return;
}
void tsort() {
  for (int i = 0; i < c; i++) {
    if (!indeg[i]) ord.push_back(i);
  }
  int pt = 0;
  while (pt < ord.size()) {
    for (int i : comp[ord[pt]]) {
      for (int u : adj[i])
        if (cmp[u] != cmp[i]) {
          indeg[cmp[u]]--;
          if (!indeg[cmp[u]]) ord.push_back(cmp[u]);
        }
    }
    pt++;
  }
  for (int i = (int)ord.size() - 1; i >= 0; i--) {
    int v = comp[ord[i]][0];
    if (!mark[cmp[v]]) {
      mark[cmp[v]] = 1;
      for (int u : comp[cmp[v]]) {
        if (u % 2) ans.push_back(u / 2);
      }
      if (v % 2)
        v--;
      else
        v++;
      mark[cmp[v]] = 1;
    }
  }
  return;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n, m, u, v, w;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> u >> v >> w;
    u--, v--;
    adj[u * 2].push_back(v * 2 + 1 - w);
    adj[v * 2].push_back(u * 2 + 1 - w);
    adj[u * 2 + 1].push_back(v * 2 + w);
    adj[v * 2 + 1].push_back(u * 2 + w);
  }
  for (int i = 0; i < 2 * n; i++) {
    if (!mark[i]) Tarjan(i);
  }
  for (int i = 0; i < n; i++) {
    if (cmp[i * 2] == cmp[i * 2 + 1]) {
      cout << "Impossible" << endl;
      return 0;
    }
  }
  for (int i = 0; i < 2 * n; i++) {
    for (int u : adj[i])
      if (cmp[u] != cmp[i]) indeg[cmp[u]]++;
  }
  fill(mark, mark + 2 * n, 0);
  tsort();
  cout << ans.size() << endl;
  for (int u : ans) cout << u + 1 << " ";
  cout << endl;
  return 0;
}
