#include <bits/stdc++.h>
using namespace std;
const long long MAX = 5001;
const int inf = 123456789;
const double EPS = 1e-10;
const double PI = 2 * asin(1.0);
const long long mod = 1e9 + 7;
inline int double_cmp(double x, double y = 0, double tol = EPS) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
int main() {
  clock_t inicio, fim;
  inicio = clock();
  int n, m;
  scanf("%d%d", &n, &m);
  multiset<pair<int, int> > pares;
  for (int i = 0; i < m; ++i) {
    int a, b;
    scanf("%d%d", &a, &b);
    pares.insert(make_pair(a, b));
  }
  vector<int> vetor;
  for (int i = 1; i < n + 1; ++i) vetor.push_back(i);
  fim = clock();
  bool pode = false;
  while (((double)(fim - inicio)) / CLOCKS_PER_SEC <= 1.0 && !pode) {
    pode = true;
    random_shuffle(vetor.begin(), vetor.end());
    for (int i = 0; i < m; ++i) {
      if (pares.find(make_pair(vetor[i], vetor[(i + 1) % n])) != pares.end() ||
          pares.find(make_pair(vetor[(i + 1) % n], vetor[i])) != pares.end()) {
        pode = false;
        break;
      }
    }
    fim = clock();
  }
  if (!pode)
    printf("%d\n", -1);
  else {
    for (int i = 0; i < m; ++i) {
      cout << vetor[i] << " " << vetor[(i + 1) % n] << endl;
    }
  }
}
