#include <bits/stdc++.h>
using namespace std;
int i, j, k, n, m, a[1000], x, y, z, w, fa[1000], s[1000], flag, xx, yy, zz;
int getf(int x) {
  if (fa[x] == x)
    return x;
  else
    return fa[x] = getf(fa[x]);
}
void un(int x, int y) {
  int xx = getf(x), yy = getf(y);
  fa[y] = x;
}
int main() {
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; i++) fa[i] = i;
  for (i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    un(x, y);
  }
  for (i = 1; i <= n; i++) fa[i] = getf(i);
  memset(s, 0, sizeof(s));
  flag = 0;
  for (i = 1; i <= n; i++) {
    x = fa[i];
    s[x]++;
    if (s[x] > 3) {
      flag = 1;
      break;
    }
  }
  xx = 0;
  yy = 0;
  zz = 0;
  for (i = 1; i <= n; i++) {
    if (s[i] == 2) xx++;
    if (s[i] == 3) yy++;
    if (s[i] == 1) zz++;
  }
  if ((n % 3) != 0) flag = 1;
  if (zz < xx) flag = 1;
  if (flag)
    printf("-1");
  else {
    for (i = 1; i <= n; i++)
      if ((fa[i] == i) && (s[i] == 3)) {
        printf("%d", i);
        for (j = 1; j <= n; j++)
          if ((i != j) && (fa[j] == i)) printf(" %d", j);
        printf("\n");
      }
    w = 1;
    for (i = 1; i <= n; i++)
      if ((fa[i] == i) && (s[i] == 2)) {
        printf("%d", i);
        for (j = 1; j <= n; j++)
          if ((i != j) && (fa[j] == i)) printf(" %d", j);
        while ((s[fa[w]] != 1)) w++;
        printf(" %d\n", w);
        w++;
      }
    k = 0;
    while (w <= n) {
      if (s[fa[w]] == 1) {
        k++;
        printf("%d ", w);
      }
      w++;
      if (k == 3) {
        k = 0;
        printf("\n");
      }
    }
  }
  return 0;
}
