#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 30;
const int MaxN = 100005;
int g[MaxN][3];
int cnt[MaxN];
bool vis[50];
int n, m;
int tot;
bool add(int a, int b) {
  bool flag = true;
  int id1 = -1, id2 = -1;
  for (int i = 0; i < tot; i++) {
    for (int j = 0; j < cnt[i]; j++) {
      if (g[i][j] == a) id1 = i;
      if (g[i][j] == b) id2 = i;
    }
  }
  if (id1 != -1 && id2 != -1)
    return id1 == id2;
  else if (id1 != -1) {
    if (cnt[id1] < 3)
      g[id1][cnt[id1]++] = b;
    else
      return false;
  } else if (id2 != -1) {
    if (cnt[id2] < 3)
      g[id2][cnt[id2]++] = a;
    else
      return false;
  } else {
    g[tot][0] = a;
    g[tot][1] = b;
    cnt[tot++] = 2;
  }
  return true;
}
int main() {
  while (2 == scanf("%d%d", &n, &m)) {
    bool f;
    memset(vis, false, sizeof(vis));
    memset(cnt, 0, sizeof(cnt));
    tot = 0;
    while (m--) {
      int a, b;
      scanf("%d%d", &a, &b);
      vis[a] = vis[b] = true;
      f = add(a, b);
      if (!f) break;
    }
    if (m > 0)
      while (m--) {
        int a, b;
        scanf("%d%d", &a, &b);
      }
    if (f) {
      int cnt1 = 0, cnt2 = 0;
      for (int i = 1; i <= n; i++)
        if (!vis[i]) cnt1++;
      for (int i = 0; i < tot; i++) {
        if (cnt[i] == 2) cnt2++;
      }
      if ((cnt1 == cnt2) || ((cnt1 > cnt2) && ((cnt1 - cnt2) % 3 == 0))) {
        for (int i = 0; i < tot; i++) {
          if (cnt[i] == 3) {
            printf("%d %d %d\n", g[i][0], g[i][1], g[i][2]);
          } else if (cnt[i] == 2) {
            printf("%d %d ", g[i][0], g[i][1]);
            for (int j = 1; j <= n; j++) {
              if (!vis[j]) {
                printf("%d\n", j);
                vis[j] = true;
                break;
              }
            }
          }
        }
        for (int i = 1; i <= n; i++) {
          int t = 0;
          if (!vis[i]) {
            t = 1;
            printf("%d ", i);
            vis[i] = true;
            for (int j = i + 1; j <= n; j++) {
              if (!vis[j]) {
                t++;
                printf("%d%c\n", j, (t == 3 ? '\n' : ' '));
                vis[j] = true;
              }
              if (t == 3) break;
            }
          }
        }
      } else
        puts("-1");
    } else
      puts("-1");
  }
  return 0;
}
