#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long inf = 1e9;
const long long N = 1e5 + 10;
long long mod_expo(long long a, long long b, long long c) {
  long long ans = 1;
  while (b) {
    if (b & (long long)1) ans = (ans * a) % c;
    a = (a * a) % c;
    b = b >> 1;
  }
  return ans;
}
long long inverse(long long n) { return mod_expo(n, mod - 2, mod); }
vector<int> v[N];
bool v1[N], v2[N], v3[N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, m;
  cin >> n >> m;
  vector<pair<int, int> > edge;
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
    edge.push_back(make_pair(x, y));
  }
  set<int> s;
  int a = n, b = n, c = n;
  for (int i = 1; i <= n; i++) s.insert(int(v[i].size()));
  if (int(s.size()) > 3) {
    cout << -1;
    return 0;
  }
  for (int i = 1; i <= n; i++) v1[i] = 1;
  for (int i : v[1]) v1[i] = 0, a--;
  if (int(v[1].size()) == 0) {
    cout << -1;
    return 0;
  }
  int node = v[1][0];
  for (int i = 1; i <= n; i++) v2[i] = 1;
  for (int i : v[node]) v2[i] = 0, b--;
  node = -1;
  for (int i = 1; i <= n; i++)
    if ((!v1[i]) and (!v2[i])) {
      node = i;
      break;
    }
  if (node == -1) {
    cout << -1;
    return 0;
  }
  for (int i = 1; i <= n; i++) v3[i] = 1;
  for (int i : v[node]) v3[i] = 0, c--;
  if ((a * b + b * c + a * c) != m) {
    cout << "-1";
    return 0;
  }
  bool flag = 1;
  vector<int> chk{0, 0, 1};
  for (int i = 1; i <= n; i++) {
    vector<int> temp;
    temp.push_back(v1[i]);
    temp.push_back(v2[i]);
    temp.push_back(v3[i]);
    sort(temp.begin(), temp.end());
    if (temp != chk) flag = 0;
  }
  if (flag == 0) {
    cout << "-1";
    return 0;
  }
  for (auto &i : edge) {
    if ((v1[i.first] and v1[i.second] == 0))
      ;
    else if ((v2[i.first] and v2[i.second] == 0))
      ;
    else if ((v3[i.first] and v3[i.second] == 0))
      ;
    else
      flag = 0;
  }
  if (flag == 0) {
    cout << "-1";
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    if (v1[i])
      cout << "1 ";
    else if (v2[i])
      cout << "2 ";
    else if (v3[i])
      cout << "3 ";
  }
  return 0;
}
