#include <bits/stdc++.h>
using namespace std;
template <class T>
void inc(T &a, const T &b) {
  if (a < b) a = b;
}
template <class T>
void dec(T &a, const T &b) {
  if (a > b) a = b;
}
struct node {
  int a, b;
};
int n, m, v;
vector<node> ans;
int a[100010];
inline void push(int u, int v) {
  node t;
  t.a = u;
  t.b = v;
  ans.push_back(t);
}
int main() {
  scanf("%d%d%d", &n, &m, &v);
  if (m < n - 1) {
    puts("-1");
  } else {
    for (int i = 1; i <= n; i++) a[i] = i;
    swap(a[n - 1], a[v]);
    int cnt = 1;
    push(a[n - 1], a[n]);
    for (int i = 1; i < n - 1; i++) {
      for (int j = i + 1; j < n; j++) {
        push(a[i], a[j]);
        cnt++;
        if (cnt == m) break;
      }
      if (cnt == m) break;
    }
    if (cnt < m) {
      puts("-1");
    } else {
      for (int i = 0; i < ((int)(ans).size()); i++)
        printf("%d %d\n", ans[i].a, ans[i].b);
    }
  }
  return 0;
}
