#include <bits/stdc++.h>
using namespace std;
int p1 = 0, p2 = 0, p3 = 0;
int fp1[10001], fp2[10001], f[100001];
int flag = 0;
int m, n;
int p[10001];
int getfa(int x) { return f[x] == x ? x : (f[x] = getfa(f[x])); }
int main() {
  int x, y;
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++) f[i] = i;
  for (int i = 1; i <= m; i++) {
    scanf("%d %d", &x, &y);
    int fx = getfa(x), fy = getfa(y);
    if (fx != fy) f[fx] = fy;
  }
  for (int i = 1; i <= n; i++) {
    int tmp = getfa(i);
    p[tmp]++;
  }
  for (int i = 1; i <= n; i++)
    if (p[i] > 3) {
      flag = 1;
      break;
    }
  for (int i = 1; i <= n; i++)
    if (p[i] == 2)
      fp2[++p2] = i;
    else if (p[i] == 1)
      fp1[++p1] = i;
  if (flag || p2 > p1)
    printf("-1\n");
  else {
    for (int i = 1; i <= n; i++)
      if (p[i] == 3) {
        int ttot = 0;
        for (int j = 1; j <= n; j++)
          if (getfa(j) == i) {
            if (ttot < 3)
              printf("%d ", j);
            else
              printf("%d", j);
            ++ttot;
            if (ttot == 3) break;
          }
        printf("\n");
      }
    if (p2 > p1)
      printf("-1\n");
    else {
      for (int i = 1; i <= p2; i++) {
        for (int j = 1; j <= n; j++)
          if (getfa(j) == fp2[i]) printf("%d ", j);
        printf("%d\n", fp1[p1]);
        p1--;
      }
      for (int i = 1; i <= p1; i += 3)
        printf("%d %d %d\n", fp1[i], fp1[i + 1], fp1[i + 2]);
    }
  }
  return 0;
}
