#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
bool mark[333], edge[333][333];
int n, m, k;
void make(int a, int b, bool out) {
  edge[a][b] = edge[b][a] = 1;
  if (out) {
    --m;
    cout << a << ' ' << b << endl;
  }
}
int main() {
  int a[333];
  vector<int> b;
  cin >> n >> m >> k;
  int i, j;
  for (i = 0; i < k; ++i) {
    cin >> a[i];
    mark[a[i]] = 1;
  }
  if (k == n || m > ((n * (n - 1)) >> 1) - k + 1) {
    cout << "-1\n";
    return 0;
  }
  for (i = 1; i <= n; ++i) {
    if (!mark[i]) b.push_back(i);
  }
  for (i = 0; i < b.size(); ++i) make(a[0], b[i], 1);
  for (i = 1; i < k; ++i) {
    make(a[i], b[0], 1);
    make(a[0], a[i], 0);
  }
  for (i = 1; i <= n; ++i) {
    for (j = 1; j <= n; ++j) {
      if (i != j && m > 0 && !edge[i][j]) {
        make(i, j, 1);
      }
    }
  }
  return 0;
}
