#include <bits/stdc++.h>
using namespace std;
int n, m;
set<pair<int, int> > kek;
int lol[111111];
void shuffle() {
  for (auto i = 0; i != n; i++) {
    int j = rand() % (i + 1);
    swap(lol[i], lol[j]);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  scanf("%d%d", &n, &m);
  for (auto i = 0; i != m; i++) {
    int v, u;
    scanf("%d%d", &v, &u);
    v--;
    u--;
    if (v > u) swap(v, u);
    kek.insert(make_pair(v, u));
  }
  for (auto i = 0; i != n; i++) lol[i] = i;
  clock_t bg = clock();
  srand(time(NULL));
  while ((clock() - bg) / double(CLOCKS_PER_SEC) <= 1.4) {
    shuffle();
    if (m == n) {
      bool good = true;
      for (auto i = 0; i != n; i++) {
        int nxt = i + 1;
        if (nxt == n) nxt = 0;
        int v = lol[i], u = lol[nxt];
        if (v > u) swap(v, u);
        if (kek.count(make_pair(v, u))) {
          good = false;
          break;
        }
      }
      if (!good) continue;
      for (auto i = 0; i != n; i++) {
        int v = lol[i], u = (i == n - 1) ? lol[0] : lol[i + 1];
        printf("%d %d\n", v + 1, u + 1);
      }
      return 0;
    }
    bool good = true;
    for (auto i = 0; i != m; i++) {
      int v = lol[i], u = lol[i + 1];
      if (v > u) swap(v, u);
      if (kek.count(make_pair(v, u))) {
        good = false;
        break;
      }
    }
    if (!good) continue;
    for (auto i = 0; i != m; i++) {
      printf("%d %d\n", lol[i] + 1, lol[i + 1] + 1);
    }
    return 0;
  }
  printf("-1");
  return 0;
}
