#include <bits/stdc++.h>
using namespace std;
const int maxN = 101000;
vector<int> g[maxN];
int n, m;
bool is_in(int x, int y) {
  for (int i = 0; i < g[x].size(); ++i) {
    if (g[x][i] == y) return true;
  }
  return false;
}
int a[maxN];
int x[maxN], y[maxN];
int main() {
  scanf("%d%d", &n, &m);
  if (m == 0) {
    return 0;
  }
  for (int i = 0; i < m; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    g[x].push_back(y);
    g[y].push_back(x);
  }
  if (n <= 7) {
    int len = 0;
    for (int i = 1; i <= n; ++i) {
      for (int j = i + 1; j <= n; ++j) {
        x[len] = i, y[len] = j;
        ++len;
      }
    }
    for (int i = 0; i < (1 << len); ++i) {
      int c = 0;
      for (int j = 0; j < len; ++j) {
        if (i & (1 << j)) {
          ++c;
        }
      }
      if (c != m) continue;
      int good = true;
      int cnt[8];
      memset(cnt, 0, sizeof(cnt));
      for (int j = 0; j < len; ++j) {
        if (i & (1 << j)) {
          if (is_in(x[j], y[j])) {
            good = false;
            break;
          }
          ++cnt[x[j]];
          ++cnt[y[j]];
          if (cnt[x[j]] > 2) good = false;
          if (cnt[y[j]] > 2) good = false;
        }
      }
      if (good) {
        for (int j = 0; j < len; ++j) {
          if (i & (1 << j)) {
            printf("%d %d\n", x[j], y[j]);
          }
        }
        return 0;
      }
    }
    cout << -1 << endl;
    return 0;
  }
  for (int i = 1; i <= n; ++i) {
    a[i] = i;
  }
  while (true) {
    random_shuffle(a + 1, a + n + 1);
    int good = true;
    if (m == n) {
      for (int i = 2; i <= n; ++i) {
        if (is_in(a[i - 1], a[i])) {
          good = false;
          break;
        }
      }
      if (is_in(a[1], a[n])) {
        good = false;
      }
    } else {
      for (int i = 2; i <= m + 1; ++i) {
        if (is_in(a[i - 1], a[i])) {
          good = false;
          break;
        }
      }
    }
    if (good) {
      if (m == n) {
        for (int i = 2; i <= n; ++i) {
          printf("%d %d\n", a[i - 1], a[i]);
        }
        printf("%d %d\n", a[n], a[1]);
      } else {
        for (int i = 2; i <= m + 1; ++i) {
          printf("%d %d\n", a[i], a[i - 1]);
        }
      }
      return 0;
    }
  }
  return 0;
}
