#include <bits/stdc++.h>
using namespace std;
const double pi =
    3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342;
vector<int> g[100010], ng[100010];
int ile;
bool check(int a, int b) {
  for (int i = 0; i < ((int)g[b].size()); ++i)
    if (g[b][i] == a) return 0;
  return 1;
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (m); ++i) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    g[a].push_back(b);
    g[b].push_back(a);
  }
  vector<int> cand;
  for (int i = 0; i < (n); ++i) cand.push_back(i);
  while (!cand.empty() && ile < m) {
    while (!cand.empty() && (int)ng[cand.front()].size() == 2) {
      swap(cand.front(), cand.back());
      cand.pop_back();
    }
    int j = 1;
    while (j < (int)cand.size() && (int)ng[cand.front()].size() < 2 &&
           ile < m) {
      while (j < (int)cand.size() && (int)ng[cand[j]].size() == 2) {
        swap(cand[j], cand.back());
        cand.pop_back();
      }
      if (j < (int)cand.size() && check(cand.front(), cand[j])) {
        ile++;
        ng[cand.front()].push_back(cand[j]);
        ng[cand[j]].push_back(cand.front());
      }
      j++;
    }
    if (!cand.empty()) swap(cand.front(), cand.back());
    cand.pop_back();
  }
  if (ile < m) {
    printf("-1\n");
    return 0;
  }
  for (int i = 0; i < (n); ++i)
    for (int j = 0; j < ((int)ng[i].size()); ++j)
      if (i < ng[i][j]) printf("%d %d\n", i + 1, ng[i][j] + 1);
  return 0;
}
