#include <bits/stdc++.h>
using namespace std;
vector<int> v[100005];
vector<pair<int, int> > asdf;
int n;
int m;
int cnt[100005];
vector<int> nxt[100005];
void build(int at, int num) {
  if (cnt[at] > 2) return;
  if (num == m) {
    while ((int)asdf.size()) {
      printf("%d %d\n", 1 + asdf.back().first, 1 + asdf.back().second);
      asdf.pop_back();
    }
    exit(0);
  }
  if (cnt[at] == 2) return;
  int a, b;
  if ((int)v[at].size() != 0) {
    a = v[at].front();
    b = v[at].back();
  } else {
    a = -1, b = -1;
  }
  int c, d;
  if ((int)nxt[at].size()) {
    c = nxt[at].back();
    d = nxt[at].front();
  } else {
    c = d = -1;
  }
  for (auto(i) = (at + 1); (i) != (n); (i)++) {
    if (i != d && i != c && i != a && i != b && cnt[i] < 2) {
      asdf.push_back(make_pair(i, at));
      cnt[at]++;
      cnt[i]++;
      nxt[at].push_back(i);
      nxt[i].push_back(at);
      build(i, num + 1);
      nxt[at].pop_back();
      nxt[i].pop_back();
      cnt[at]--;
      cnt[i]--;
      asdf.pop_back();
    }
  }
  if (cnt[at] > 0 && cnt[at] < 2) {
    c = nxt[at].front();
    d = nxt[at].back();
    for (auto(i) = (0); (i) != (at); (i)++) {
      if (cnt[i] < 2 && i != a && i != b && i != c && i != d) {
        asdf.push_back(make_pair(i, at));
        cnt[at]++;
        cnt[i]++;
        nxt[at].push_back(i);
        nxt[i].push_back(at);
        build(i, num + 1);
        nxt[at].pop_back();
        nxt[i].pop_back();
        cnt[at]--;
        cnt[i]--;
        asdf.pop_back();
      }
    }
  } else {
    c = d = -1;
    for (auto(i) = (0); (i) != (at); (i)++) {
      if (i != c && i != d && i != a && i != b && cnt[i] < 2) {
        asdf.push_back(make_pair(i, at));
        cnt[at]++;
        cnt[i]++;
        nxt[at].push_back(i);
        nxt[i].push_back(at);
        build(i, num + 1);
        nxt[at].pop_back();
        nxt[i].pop_back();
        cnt[at]--;
        cnt[i]--;
        asdf.pop_back();
      }
    }
  }
}
int main() {
  cin >> n >> m;
  for (auto(i) = (0); (i) != (m); (i)++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    v[a].push_back(b), v[b].push_back(a);
  }
  int kek = 0;
  for (auto(i) = (0); (i) != (n); (i)++)
    kek += (min(2, (n - 1 - (int)v[i].size())));
  kek /= 2;
  if (kek < m) {
    puts("-1");
    return 0;
  }
  for (auto(i) = (0); (i) != (n); (i)++) build(i, 0);
  return 0;
}
