#include <bits/stdc++.h>
int input() {
  int t = 0;
  char c;
  c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while (c >= '0' && c <= '9') {
    t = (t << 3) + (t << 1) + c - '0';
    c = getchar();
  }
  return t;
}
int main() {
  int m, n, i, j, k, x, y, flag = 0, t;
  int g[20][4] = {0}, group[100] = {0}, gno = 0;
  n = input();
  m = input();
  for (i = 1; i <= m; i++) {
    x = input();
    y = input();
    if (flag == 1) continue;
    if (group[x] != 0 && group[y] != 0) {
      if (group[x] == group[y])
        ;
      else
        flag = 1;
    } else if (group[x] == 0 && group[y] == 0) {
      gno++;
      g[gno][1] = x;
      g[gno][0] = y;
      group[x] = gno;
      group[y] = gno;
    } else if (group[x] != 0 && group[y] == 0) {
      t = group[x];
      if (g[t][2] == 0) {
        g[t][2] = y;
        group[y] = t;
      } else
        flag = 1;
    } else if (group[x] == 0 && group[y] != 0) {
      t = group[y];
      if (g[t][2] == 0) {
        g[t][2] = y;
        group[y] = t;
      } else
        flag = 1;
    }
  }
  if (flag == 1 || gno > n / 3) {
    printf("-1");
    return 0;
  }
  x = n / 3;
  int count = 0;
  for (i = 1; i <= n; i++) {
    if (group[i] == 0) count++;
  }
  for (i = 1; i <= n; i++) {
    if (group[i] != 0)
      ;
    else {
      for (j = 1; j <= x; j++) {
        if (g[j][0] == 0) {
          g[j][0] = i;
          group[i] = j;
          break;
        } else if (g[j][1] == 0) {
          g[j][1] = i;
          group[i] = j;
          break;
        } else if (g[j][2] == 0) {
          g[j][2] = i;
          group[i] = j;
          break;
        }
      }
    }
  }
  for (i = 1; i <= x; i++) {
    printf("%d %d %d\n", g[i][0], g[i][1], g[i][2]);
  }
  return 0;
}
