#include <bits/stdc++.h>
using namespace std;
const long long ff = 4e5 + 15;
const long long M = 998244353;
const long long inf = 1e18 + 1;
long long n, m, k, a[ff], b[1212][1212], c[ff];
long long pre(long long x) { return x == 1 ? n : x - 1; }
long long nex(long long x) { return x == n ? 1 : x + 1; }
void init() {
  cin >> n >> m >> k;
  if (k == n) {
    puts("-1");
    return;
  }
  if (m > (n - 1) * n / 2 + 1 - k) {
    puts("-1");
    return;
  }
  for (long long i = 1; i <= k; ++i) cin >> a[i], c[a[i]] = 1;
  for (long long i = 1; i <= n; ++i)
    if (!c[i]) {
      cout << a[1] << " " << i << "\n", m--;
      b[a[1]][i] = 1;
      break;
    }
  for (long long i = 1; i <= n - 1; ++i)
    if (i != a[1] && i + 1 != a[1])
      cout << i << " " << i + 1 << "\n", b[i][i + 1] = 1, m--;
  if (a[1] != 1 && a[1] != n)
    cout << pre(a[1]) << " " << nex(a[1]) << "\n", m--,
        b[pre(a[1])][nex(a[1])] = 1;
  if (!m) exit(0);
  for (long long i = 1; i <= n; ++i)
    for (long long j = i + 1; j <= n; ++j)
      if (i != a[1] && j != a[1] && (!b[i][j] && !b[j][i])) {
        cout << i << " " << j << "\n";
        m--;
        if (!m) exit(0);
      }
  for (long long i = 1; i <= n; ++i)
    if (i != a[1] && !c[i] && !b[a[1]][i]) {
      cout << a[1] << " " << i << "\n";
      m--;
      if (!m) exit(0);
    }
}
signed main() {
  long long Ts = 1;
  for (long long i = 1; i <= Ts; ++i) init();
}
