#include <bits/stdc++.h>
using namespace std;
FILE *in;
FILE *out;
const int MAX = 131072;
int n, m;
set<pair<int, int> > edges;
set<pair<int, int> > used;
int deg[MAX];
vector<int> v[MAX];
int totalCycles;
const int maxCycles = 10000000;
int rand21() {
  int ret = 0;
  for (int i = 0; i < 3; i++) {
    int add = (rand() & (((1 << 7) - 1) << 7)) >> 7;
    ret |= (add << (i * 7));
  }
  return ret;
}
bool eval() {
  used.clear();
  for (int i = 0; i < n; i++) {
    v[i].clear();
    deg[i] = 0;
  }
  for (int i = 0; i < m; i++) {
    int node1 = -1, node2 = -1;
    int innerCycles = 0, limit = 100000;
    while (true) {
      totalCycles++;
      if (totalCycles > maxCycles) return false;
      innerCycles++;
      if (innerCycles > limit) return false;
      node1 = rand21() % n;
      while (deg[node1] >= 2) {
        totalCycles++;
        if (totalCycles > maxCycles) return false;
        innerCycles++;
        if (innerCycles > limit) return false;
        node1 = rand21() % n;
      }
      node2 = rand21() % n;
      while (deg[node2] >= 2) {
        totalCycles++;
        if (totalCycles > maxCycles) return false;
        innerCycles++;
        if (innerCycles > limit) return false;
        node2 = rand21() % n;
      }
      if (node1 == node2) continue;
      if (node1 > node2) swap(node1, node2);
      if (edges.find(make_pair(node1, node2)) != edges.end()) continue;
      if (used.find(make_pair(node1, node2)) != used.end()) continue;
      break;
    }
    deg[node1]++;
    deg[node2]++;
    v[node1].push_back(node2);
    used.insert(make_pair(node1, node2));
  }
  return true;
}
int main(void) {
  in = stdin;
  out = stdout;
  fscanf(in, "%d %d", &n, &m);
  for (int i = 0; i < m; i++) {
    int node1, node2;
    fscanf(in, "%d %d", &node1, &node2);
    node1--;
    node2--;
    edges.insert(make_pair(min(node1, node2), max(node1, node2)));
  }
  totalCycles = 0;
  while (true) {
    if (eval()) {
      for (int i = 0; i < n; i++) {
        for (int c = 0; c < (int)v[i].size(); c++)
          fprintf(out, "%d %d\n", i + 1, v[i][c] + 1);
      }
      return 0;
    }
    if (totalCycles > maxCycles) break;
  }
  fprintf(out, "-1\n");
  return 0;
}
