#include <bits/stdc++.h>
using namespace std;
int compare(string a, string b) {
  if (a == b) return 0;
  if (((int)a.size()) == ((int)b.size())) {
    for (int i = 0; i < ((int)a.size()); i++) {
      if (a[i] > b[i])
        return 1;
      else if (a[i] < b[i])
        return -1;
    }
    return -1;
  }
  if (((int)a.size()) > ((int)b.size())) return 1;
  return -1;
}
string string_add(string b, string a) {
  if (((int)a.size()) > ((int)b.size())) swap(a, b);
  a = string((((int)b.size()) - ((int)a.size())), '0') + a;
  int carry = 0, add;
  string res;
  for (int i = ((int)a.size()) - 1; i > -1; i--) {
    add = (int)(a[i] - '0') + (int)(b[i] - '0') + carry;
    carry = add / 10;
    res += (add % 10) + '0';
  }
  if (carry) res += carry + '0';
  reverse(res.begin(), res.end());
  return res;
}
string string_mul(string a, string b) {
  if (((int)a.size()) > ((int)b.size())) swap(a, b);
  string res, tres;
  int l = 0, carry, mul;
  for (int i = ((int)a.size()) - 1; i > -1; i--) {
    tres = string(l, '0');
    carry = 0;
    for (int j = ((int)b.size()) - 1; j > -1; j--) {
      mul = (int)(a[i] - '0') * (int)(b[j] - '0') + carry;
      carry = mul / 10;
      tres += (mul % 10) + '0';
    }
    if (carry) tres += carry + '0';
    reverse(tres.begin(), tres.end());
    res = string_add(tres, res);
    l++;
  }
  return res;
}
void cut_leading_zero(string &res) {
  int i;
  for (i = 0; i < ((int)res.size()); i++) {
    if (res[i] != '0') break;
  }
  res = res.substr(i);
  if (!((int)res.size())) res = "0";
  return;
}
long long big_mod(long long a, long long p, long long MOD) {
  if (p == 0) return 1L;
  long long ret = big_mod(a, p / 2, MOD);
  ret = ((ret * ret) % MOD + MOD) % MOD;
  if (p % 2) ret = ((ret * a) % MOD + MOD) % MOD;
  return ret;
}
long long power(long long a, long long p) {
  if (p == 0) return 1L;
  long long ret = power(a, p / 2);
  ret = (ret * ret);
  if (p % 2) ret = (ret * a);
  return ret;
}
map<pair<int, int>, int> mpp1, mpp2;
int n, m, S[100003];
bool solve() {
  int in;
  random_shuffle(S, S + n);
  for (int i = 0; i < m; i++) {
    if (mpp1.find(make_pair(S[i], S[(i + 1) % n])) != mpp1.end()) return false;
  }
  for (int i = 0; i < m; i++) {
    cout << S[i] << " " << S[(i + 1) % n] << endl;
  }
  return true;
}
int main() {
  int u, v;
  cin >> n >> m;
  for (int i = 0; i < n; i++) S[i] = i + 1;
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    mpp1[make_pair(u, v)]++;
    mpp1[make_pair(v, u)]++;
  }
  for (int i = 0; i < 100; i++) {
    if (solve()) return 0;
  }
  cout << -1 << endl;
  return 0;
}
