#include <bits/stdc++.h>
using namespace std;
long long a, b, c, d = 0, e = 0, i, f = 0, g = 0, j, k = 0, l = 0, r, z, h, m,
                   p[50], mod = 1000000007, mod1 = 998244353;
string t, x, q, s[501];
long long df[201];
vector<long long> v;
vector<long long> u, w;
vector<long long> dv[201];
set<long long> y;
map<long long, long long> n, n1;
void dfs(long long x) {
  for (long long i = 0; i < dv[x].size(); i++) {
    if (df[dv[x][i]] == 0) {
      df[dv[x][i]] = df[x];
      dfs(dv[x][i]);
    }
  }
}
int main() {
  cin >> a >> b;
  for (i = 1; i <= b; i++) {
    cin >> c >> d;
    dv[c].push_back(d);
    dv[d].push_back(c);
  }
  d = 0;
  for (i = 1; i <= a; i++) {
    p[i] = 0;
    if (dv[i].size() == 0) {
      v.push_back(i);
      continue;
    }
    if (df[i] == 0) {
      d++;
      df[i] = d;
      dfs(i);
    }
    if (d > a / 3) {
      cout << -1;
      return 0;
    }
  }
  for (i = 1; i <= a; i++) {
    p[df[i]]++;
  }
  for (i = 1; i <= a / 3; i++) {
    if (p[i] > 3) {
      cout << -1;
      return 0;
    }
  }
  f = 0;
  for (i = 1; i <= a / 3; i++) {
    e = 0;
    for (j = 1; j <= a; j++) {
      if (df[j] == i) {
        cout << j << ' ';
        e++;
      }
    }
    while (e < 3) {
      e++;
      cout << v[f] << ' ';
      f++;
    }
    cout << endl;
  }
}
