#include <bits/stdc++.h>
using namespace std;
using namespace std;
vector<int> x[1003];
int a[1003], v[1003];
int n;
void pp() {
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < x[i].size(); j++) cout << i << " " << x[i][j] << '\n';
  }
}
int main() {
  int m, k;
  cin >> n >> m >> k;
  for (int i = 1; i <= k; i++) {
    cin >> a[i];
    v[a[i]] = 1;
  }
  if (k == n) {
    cout << "-1" << '\n';
    return 0;
  }
  int l;
  for (int i = 1; i <= n; i++) {
    if (v[i] == 0) l = i;
  }
  for (int i = 1; i <= n; i++) {
    if (i != l) x[l].push_back(i);
  }
  int w = n - 1;
  if (w == m) {
    pp();
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      if (i != l && i != a[1] && i != a[2] && j != l && j != a[1] &&
          j != a[2]) {
        x[i].push_back(j);
        w++;
        if (w == m) {
          pp();
          return 0;
        }
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    if (i != l && i != a[1] && i != a[2]) {
      if (v[i] == 1) {
        x[a[1]].push_back(i);
        w++;
        if (w == m) {
          pp();
          return 0;
        }
      } else {
        x[a[1]].push_back(i);
        w++;
        if (w == m) {
          pp();
          return 0;
        }
        x[a[2]].push_back(i);
        w++;
        if (w == m) {
          pp();
          return 0;
        }
      }
    }
  }
  cout << "-1" << '\n';
}
