#include <bits/stdc++.h>
using namespace std;
long long max3(long long a, long long b, long long c) {
  return max(a, max(c, b));
}
long long min3(long long a, long long b, long long c) {
  return min(a, min(b, c));
}
int32_t main() {
  long long n, m;
  cin >> n >> m;
  map<long long, vector<long long>> map;
  for (long long i = 0; i < m; i++) {
    long long a, b;
    cin >> a >> b;
    if (map.count(a)) {
      map[a].push_back(b);
    } else {
      std::vector<long long> arr;
      arr.push_back(b);
      map[a] = arr;
    }
    if (map.count(b)) {
      map[b].push_back(a);
    } else {
      std::vector<long long> arr;
      arr.push_back(a);
      map[b] = arr;
    }
  }
  stack<pair<long long, long long>> st;
  long long arr[n + 1];
  long long flag = 0;
  for (long long i = 0; i <= n; i++) {
    arr[i] = 0;
  }
  for (auto k : map) {
    long long i = k.first;
    if (arr[i] == 0) {
      st.push(make_pair(i, 1));
    }
    while (!st.empty()) {
      pair<long long, long long> p = st.top();
      st.pop();
      if (arr[p.first] == 0) {
        arr[p.first] = p.second;
        if (p.second == 1) {
          for (long long j = 0; j < map[p.first].size(); j++) {
            st.push(make_pair(map[p.first][j], 2));
          }
        } else {
          for (long long j = 0; j < map[p.first].size(); j++) {
            st.push(make_pair(map[p.first][j], 1));
          }
        }
      } else if (arr[p.first] == 1) {
        if (p.second == 2) {
          flag = 1;
          cout << -1;
          break;
        }
      } else {
        if (p.second == 1) {
          flag = 1;
          cout << -1;
          break;
        }
      }
    }
    if (flag == 1) {
      break;
    }
  }
  if (flag == 0) {
    long long one = 0;
    long long two = 0;
    for (long long i = 1; i <= n; i++) {
      if (arr[i] == 1) {
        one++;
      }
      if (arr[i] == 2) {
        two++;
      }
    }
    cout << one << "\n";
    for (long long i = 1; i <= n; i++) {
      if (arr[i] == 1) {
        cout << i << " ";
      }
    }
    cout << "\n";
    cout << two << "\n";
    for (long long i = 1; i <= n; i++) {
      if (arr[i] == 2) {
        cout << i << " ";
      }
    }
  }
}
