#include <bits/stdc++.h>
using namespace std;
const int M = 100;
const double pi = acos(-1.0);
int s[64], num[64];
int r[64];
bool vis[64];
int Find(int x) {
  if (x != s[x]) s[x] = Find(s[x]);
  return s[x];
}
void Union(int x, int y) {
  x = Find(x);
  y = Find(y);
  if (x == y) return;
  if (r[x] > r[y]) {
    s[y] = x;
    num[x]++;
  } else {
    s[x] = y;
    num[y]++;
    if (r[x] == r[y]) {
      r[y]++;
    }
  }
}
struct G {
  vector<int> x;
} g[64];
int main() {
  int n, m, x, y;
  while (~scanf("%d%d", &n, &m)) {
    for (int i = 1; i <= n; i++) {
      s[i] = i;
      num[i] = 0;
      r[i] = 0;
      vis[i] = false;
    }
    for (int i = 0; i < m; i++) {
      scanf("%d%d", &x, &y);
      Union(x, y);
    }
    bool flag = false;
    for (int i = 1; i <= n; i++) {
      if (num[i] > 2) {
        flag = true;
        break;
      }
    }
    int lg = 0;
    if (!flag) {
      for (int i = 1; i <= n; i++) {
        if (num[s[i]] == 2 && !vis[i]) {
          g[lg].x.clear();
          for (int j = 1; j <= n; j++) {
            if (s[j] == s[i]) {
              g[lg].x.push_back(j);
              vis[j] = true;
            }
          }
          lg++;
        }
      }
      for (int i = 1; i <= n; i++) {
        if (num[s[i]] == 1 && !vis[i]) {
          g[lg].x.clear();
          for (int j = 1; j <= n; j++) {
            if (s[j] == s[i]) {
              g[lg].x.push_back(j);
              vis[j] = true;
            }
          }
          bool ok = true;
          for (int j = 1; j <= n; j++) {
            if (!vis[j] && s[j] == j && num[j] == 0) {
              g[lg].x.push_back(j);
              vis[j] = true;
              ok = false;
              break;
            }
          }
          lg++;
          if (ok) {
            flag = true;
            break;
          }
        }
      }
    }
    if (flag) {
      puts("-1");
      continue;
    }
    for (int i = 0; i < lg; i++) {
      for (int j = 0; j < 3; j++) {
        printf("%d ", g[i].x[j]);
      }
      puts("");
    }
    int sum = 0;
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        printf("%d ", i);
        sum++;
        if (sum % 3 == 0) puts("");
      }
    }
  }
  return 0;
}
