#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
int vis[N];
vector<int> v[N], bfs;
vector<pair<int, int> > p;
set<pair<int, int> > s;
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    if (x < y) swap(x, y);
    v[x].push_back(y);
    v[y].push_back(x);
    s.insert({x, y});
  }
  if (n < 9) {
    vector<int> o;
    for (int i = 1; i <= n; i++) o.push_back(i);
    do {
      int flg = 1;
      for (int i = 1; i < n; i++)
        if (s.find({max(o[i], o[i - 1]), min(o[i], o[i - 1])}) != s.end()) {
          flg = 0;
          break;
        }
      if (m == n &&
          s.find({max(o[0], o.back()), min(o[0], o.back())}) != s.end())
        flg = 0;
      if (flg) {
        for (int i = 0; i < min(n - 1, m); i++)
          cout << o[i] << ' ' << o[i + 1] << endl;
        if (m == n) cout << o[0] << ' ' << o.back() << endl;
        return 0;
      }
    } while (next_permutation(o.begin(), o.end()));
    cout << -1;
    return 0;
  }
  for (int i = 1; i <= n; i++)
    if (!vis[i]) {
      bfs.push_back(i);
      vis[i] = true;
      for (int j = ((int)bfs.size()) - 1; j < ((int)bfs.size()); j++) {
        int u = bfs[j];
        for (int k = 0; k < ((int)v[u].size()); k++)
          if (!vis[v[u][k]]) {
            vis[v[u][k]] = 1;
            bfs.push_back(v[u][k]);
          }
      }
    }
  cout << endl;
  for (int st = 0; st < 3; st++)
    for (int i = st + 3; i < n && m; i += 3) {
      --m;
      int x = bfs[i], y = bfs[i - 3];
      if (x < y) swap(x, y);
      if (s.find({x, y}) == s.end())
        p.push_back({x, y});
      else
        m++;
    }
  int cur = ((int)bfs.size()) - 1;
  while (m--) {
    int y = bfs[cur % 3], x = bfs[cur--];
    if (x < y) swap(x, y);
    p.push_back({x, y});
  }
  for (int i = 0; i < ((int)p.size()); i++)
    if (s.find(p[i]) != s.end() || (p[i].first == p[i].second)) {
      cout << -1;
      return 0;
    }
  for (int i = 0; i < ((int)p.size()); i++)
    cout << p[i].first << ' ' << p[i].second << endl;
}
