#include <bits/stdc++.h>
using namespace std;
const int N = 310;
int n, m, k, mark[N], node, co;
vector<int> v;
void add(int x, int y) {
  if (co < m) {
    ++co;
    cout << x << ' ' << y << '\n';
  }
}
int main() {
  cin >> n >> m >> k;
  int must = (n - 1) * n / 2 - (k - 1);
  if (k == n || m > must || m < 2) {
    cout << "-1\n";
    return 0;
  }
  for (int i = 1, a; i <= k; ++i) {
    cin >> a;
    mark[a] = 1;
    v.push_back(a);
  }
  for (int i = 1; i <= n; ++i)
    if (mark[i] == 0) node = i;
  int n1 = v.back();
  v.pop_back();
  int n2 = v.back();
  v.pop_back();
  add(node, n1);
  add(node, n2);
  for (int i = 1; i <= n; ++i)
    if (mark[i] == 0 && i != node) v.push_back(i);
  int lst = n;
  n = v.size();
  for (int i = 0; i < n; ++i) add(node, v[i]);
  for (int i = 0; i < n - 1; ++i)
    for (int j = i + 1; j < n; ++j) add(v[i], v[j]);
  for (int i = 0; i < n; ++i) add(n1, v[i]);
  for (int i = 1; i <= lst; ++i)
    if (mark[i] == 0 && i != node) add(n2, i);
}
