#include <bits/stdc++.h>
using namespace std;
int n, m, deg[24], k;
bool used[111111];
vector<int> a[111111], v, t, c[111111];
set<pair<int, int> > s;
pair<int, int> e[111111];
inline int bits(int mask) {
  int res = 0;
  while (mask > 0) {
    res++;
    mask &= mask - 1;
  }
  return res;
}
inline void dfs(int u) {
  v.push_back(u);
  used[u] = true;
  for (int i = 0; i < a[u].size(); i++) {
    int v = a[u][i];
    if (used[v]) continue;
    dfs(v);
  }
}
int main(int argc, char* argv[]) {
  scanf("%d", &n);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d", &x);
    scanf("%d", &y);
    a[x].push_back(y);
    a[y].push_back(x);
    if (x > y) swap(x, y);
    s.insert(make_pair(x, y));
  }
  if (n <= 7) {
    for (int i = 1; i <= n; i++)
      for (int j = i + 1; j <= n; j++) e[++k] = make_pair(i, j);
    int all = (1ll << (k)) - 1;
    for (int i = 1; i <= all; i++)
      if (bits(i) == m) {
        memset(deg, 0, sizeof(deg));
        bool ok = true;
        for (int j = 1; j <= k; j++)
          if (i & (1ll << (j - 1))) {
            if (s.find(e[j]) != s.end()) {
              ok = false;
              break;
            }
            deg[e[j].first]++;
            deg[e[j].second]++;
            if (deg[e[j].first] > 2 || deg[e[j].second] > 2) {
              ok = false;
              break;
            }
          }
        if (ok) {
          for (int j = 1; j <= k; j++)
            if (i & (1ll << (j - 1)))
              cout << e[j].first << " ", cout << e[j].second << endl;
          return 0;
        }
      }
    cout << "-1" << endl;
    return 0;
  }
  int mx = 0, j = 0;
  for (int i = 1; i <= n; i++)
    if (!used[i]) {
      v.clear();
      k++;
      dfs(i);
      for (int q = 0; q < v.size(); q++)
        if (q % 2 == 0) c[k].push_back(v[q]);
      for (int q = 0; q < v.size(); q++)
        if (q % 2 == 1) c[k].push_back(v[q]);
      if (c[k].size() > mx) {
        mx = c[k].size();
        j = k;
      }
      if (c[k].size() % 2 == 0) swap(c[k][0], c[k][1]);
    }
  v = c[j];
  for (int i = 1; i <= k; i++)
    if (i != j) {
      t.clear();
      for (int l = 0; l < c[i].size(); l++) {
        t.push_back(v[l]);
        t.push_back(c[i][l]);
      }
      for (int l = c[i].size(); l < v.size(); l++) t.push_back(v[l]);
      v = t;
    }
  for (int i = 0; i < ((m) > (v.size() - 1) ? (v.size() - 1) : (m)); i++)
    cout << v[i] << " ", cout << v[i + 1] << endl;
  if (v.size() - 1 < m)
    cout << v[0] << " ", cout << v[v.size() - 1] << endl;
  else
    cout << "" << endl;
  return 0;
}
