#include <bits/stdc++.h>
int vis[400];
int main() {
  int n, k, m;
  while (scanf("%d%d%d", &n, &m, &k) != EOF) {
    int i;
    memset(vis, 0, sizeof(vis));
    for (i = 0; i < k; i++) {
      int tmp;
      scanf("%d", &tmp);
      vis[tmp] = 1;
    }
    if (m > n * (n - 1) / 2 - (k - 2) - 1 || k == n) {
      puts("-1");
      continue;
    }
    int root = 1;
    while (vis[root]) root++;
    for (i = 1; i <= n; i++) {
      if (i == root) continue;
      printf("%d %d\n", i, root);
      m--;
    }
    int c1 = 1, c2;
    while (!vis[c1]) c1++;
    int j;
    for (i = 1; i <= n && m; i++) {
      if (i == root || i == c1) continue;
      for (j = i + 1; j <= n && m; j++) {
        if (j == root) continue;
        printf("%d %d\n", i, j);
        m--;
      }
    }
    for (i = c1 + 1; i <= n && m; i++) {
      if (i == root) continue;
      if (!vis[i]) {
        printf("%d %d\n", i, c1);
        m--;
      }
    }
  }
  return 0;
}
