#include <bits/stdc++.h>
using namespace std;
bool ok(set<int>& a, set<pair<int, int> >& ed, int first, int second, int pend,
        int our, int pend2) {
  if (first == pend) {
    if (second == pend2) return false;
    if (a.find(second) == a.end()) return true;
    if (ed.find(make_pair(min(pend2, second), max(pend2, second))) == ed.end())
      return true;
    return false;
  }
  if (second == pend) {
    if (first == pend2) return false;
    if (a.find(first) == a.end()) return true;
    if (ed.find(make_pair(min(pend2, first), max(pend2, first))) == ed.end())
      return true;
    return false;
  }
  if (second == pend2) {
    if (first == pend) return false;
    if (a.find(first) == a.end()) return true;
    if (ed.find(make_pair(min(pend, first), max(pend, first))) == ed.end())
      return true;
    return false;
  }
  if (first == pend2) {
    if (second == pend) return false;
    if (a.find(second) == a.end()) return true;
    if (ed.find(make_pair(min(pend, second), max(pend, second))) == ed.end())
      return true;
    return false;
  }
  return true;
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  set<int> a;
  for (int i = 0; i < k; ++i) {
    int tmp;
    cin >> tmp;
    --tmp;
    a.insert(tmp);
  }
  if (k == n) {
    cout << -1 << endl;
    return 0;
  }
  int pend = -1;
  int pend2 = -1;
  int our = -1;
  for (int i = 0; i < n; ++i) {
    if (a.find(i) == a.end()) {
      our = i;
      continue;
    }
    if (pend != -1)
      pend2 = i;
    else
      pend = i;
    if (our != -1 && pend != -1 && pend2 != -1) break;
  }
  set<pair<int, int> > ed;
  ed.insert(make_pair(min(pend, our), max(pend, our)));
  ed.insert(make_pair(min(pend2, our), max(pend2, our)));
  int prev = pend2;
  int i = 1;
  while (ed.size() < n - 1) {
    int next = (our + i) % n;
    if (next != pend && next != our && next != pend2) {
      ed.insert(make_pair(min(prev, next), max(prev, next)));
      prev = next;
    }
    ++i;
  }
  for (int first = 0; first < n && ed.size() < m; ++first) {
    for (int second = first + 1; second < n && ed.size() < m; ++second) {
      if (ed.find(make_pair(first, second)) == ed.end() &&
          ok(a, ed, first, second, pend, our, pend2)) {
        ed.insert(make_pair(min(first, second), max(first, second)));
      }
    }
  }
  if (ed.size() < m) {
    cout << -1 << endl;
    return 0;
  }
  for (set<pair<int, int> >::iterator it = ed.begin(); it != ed.end(); ++it) {
    cout << it->first + 1 << " " << it->second + 1 << endl;
  }
  return 0;
}
