#include <bits/stdc++.h>
using namespace std;
const int MAXN = 110000;
vector<int> adj[MAXN];
int v[MAXN], N, M;
int P(int x) { return x % N == 0 ? N : x % N; }
int main() {
  while (~scanf("%d %d", &N, &M)) {
    for (int i = 1; i <= N; ++i) adj[i].clear();
    for (int i = 0; i < M; ++i) {
      int a, b;
      scanf("%d %d", &a, &b);
      adj[a].push_back(b), adj[b].push_back(a);
    }
    for (int i = 1; i <= N; ++i) v[i] = i;
    int test_cnt = 0;
    for (test_cnt = 0; test_cnt < 100; ++test_cnt) {
      random_shuffle(v + 1, v + N + 1);
      int c = 0;
      for (int i = 1, j; i <= N; ++i) {
        for (j = 0; j < adj[v[i]].size(); ++j)
          if (adj[v[i]][j] == v[P(i + 1)]) break;
        if (j == adj[v[i]].size()) ++c;
      }
      if (c >= M) break;
    }
    if (test_cnt == 100) {
      puts("-1");
      continue;
    }
    for (int i = 1, j; i <= N && M; ++i) {
      for (j = 0; j < adj[v[i]].size(); ++j)
        if (adj[v[i]][j] == v[P(i + 1)]) break;
      if (j == adj[v[i]].size()) printf("%d %d\n", v[i], v[P(i + 1)]), --M;
    }
  }
  return 0;
}
