#include <bits/stdc++.h>
using namespace std;
struct dsu {
  vector<int> parent;
  vector<int> siz;
  bool ini = 0;
  dsu(int sx) {
    ini = 1;
    siz.resize(sx);
    parent.resize(sx);
    for (int i = 0; i < sx; i++) {
      parent[i] = i, siz[i] = 1;
    }
  }
  int find(int x) {
    assert(ini);
    return parent[x] = (x == parent[x] ? x : find(parent[x]));
  }
  bool same(int x, int y) {
    assert(ini);
    return find(x) == find(y);
  }
  void unite(int a, int b) {
    assert(ini);
    a = find(a);
    b = find(b);
    if (a == b) {
      return;
    }
    if (siz[a] < siz[b]) {
      swap(a, b);
    }
    siz[a] += siz[b];
    parent[b] = a;
  }
};
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int N, M, K;
  cin >> N >> M >> K;
  if (N == K) {
    cout << -1;
    return 0;
  }
  vector<int> A(K);
  set<int> inn;
  vector<bool> badbois(N, true);
  for (int i = 0; i < K; i++) {
    cin >> A[i];
    A[i]--;
    badbois[A[i]] = false;
    inn.insert(A[i]);
  }
  int spcl = 0;
  for (int i = 0; i < N; i++) {
    if (inn.find(i) != inn.end()) {
      spcl = i;
      break;
    }
  }
  vector<pair<int, int> > edges;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < i; j++) {
      if (i != spcl && j != spcl) {
        edges.push_back({j, i});
      }
    }
  }
  bool F = 0;
  for (int i = 0; i < N; i++) {
    if (i != spcl && badbois[i]) {
      if (!F && K == 1) {
        F = 1;
        continue;
      }
      edges.push_back({i, spcl});
    }
  }
  if (M > edges.size()) {
    cout << -1;
    return 0;
  }
  dsu ds(N);
  set<int> done;
  for (int i = 0; i < edges.size(); i++) {
    if (!ds.same(edges[i].first, edges[i].second)) {
      ds.unite(edges[i].first, edges[i].second);
      done.insert(i);
      M--;
    }
  }
  for (int i = 0; i < edges.size(); i++) {
    if (M == 0) {
      break;
    }
    if (done.find(i) == done.end()) {
      done.insert(i);
      M--;
    }
  }
  for (int i : done) {
    cout << edges[i].first + 1 << ' ' << edges[i].second + 1 << endl;
  }
  return 0;
}
