#include <bits/stdc++.h>
using namespace std;
long long mul(long long a, long long b) { return (a * b) % (100000007); }
long long add(long long a, long long b) { return (a + b) % (100000007); }
long long sub(long long a, long long b) {
  return (a - b + (a - b) / (100000007) * (100000007) + (100000007)) %
         (100000007);
}
int n, m;
map<pair<int, int>, bool> h;
int degree[(100000 + 10)] = {0}, ans[(100000 + 10)];
bool check() {
  for (int i = 1; i <= m; i++)
    if (h[make_pair(ans[i], ans[i + 1])]) return 1;
  for (int i = 1; i <= n; i++) degree[i] = 0;
  for (int i = 1; i <= m + 1; i++) degree[ans[i]] += 1 + (1 < i && i < m + 1);
  for (int i = 1; i <= m + 1; i++)
    if (degree[ans[i]] > 2) return 1;
  if (m + 1 == 3 && ans[1] == ans[3]) return 1;
  return 0;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    h[make_pair(u, v)] = h[make_pair(v, u)] = 1;
  }
  for (int i = 1; i <= n; i++) h[make_pair(i, i)] = 1;
  for (int i = 1; i <= n; i++) ans[i] = i;
  int T = 3000000 / m;
  while (T--) {
    random_shuffle(ans + 1, ans + 1 + n);
    ans[0] = ans[n];
    int cnt = 0;
    for (int i = 0; i < n; i++)
      if (!h[make_pair(ans[i], ans[i + 1])]) cnt++;
    if (cnt < m) continue;
    {
      for (int i = 0; m; i++)
        if (!h[make_pair(ans[i], ans[i + 1])])
          printf("%d %d\n", ans[i], ans[i + 1]), m--;
      return 0;
    }
  }
  puts("-1");
  return 0;
}
