#include <bits/stdc++.h>
using namespace std;
const int MaxN = 305;
int n, m, k, a[MaxN], h[MaxN];
int f[MaxN][MaxN];
void writeit() {
  int i, j;
  for (i = 1; i <= n; i++)
    for (j = i + 1; j <= n; j++)
      if (f[i][j]) printf("%d %d\n", i, j);
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  int i, j;
  for (i = 0; i < k; i++) {
    scanf("%d", a + i);
    h[a[i]] = 1;
  }
  sort(a, a + k);
  if (n - k < 1) {
    puts("-1");
    return 0;
  }
  int u = a[0], v = a[1], t = 1;
  while (h[t]) t++;
  f[u][t] = 1;
  f[t][u] = 1;
  f[v][t] = 1;
  f[t][v] = 1;
  int e = m - 2;
  if (e == 0) {
    writeit();
    return 0;
  }
  for (i = 1; i <= n; i++) {
    if (i != u && i != v && i != t) {
      f[u][i] = 1;
      f[i][u] = 1;
      e--;
      if (e == 0) {
        writeit();
        return 0;
      }
    }
  }
  for (i = 1; i <= n; i++)
    for (j = i + 1; j <= n; j++)
      if (i != j && !f[i][j]) {
        if (i == u && j == v || i == v && j == u || i == u && h[j] && f[j][v] ||
            j == u && h[i] && f[i][v] || i == v && h[j] && f[j][u] ||
            j == v && h[i] && f[i][u])
          continue;
        f[i][j] = 1;
        f[j][i] = 1;
        e--;
        if (e == 0) {
          writeit();
          return 0;
        }
      }
  puts("-1");
  return 0;
}
