#include <bits/stdc++.h>
using namespace std;
inline void upmax(int &x, int b) {
  if (b > x) x = b;
}
int n, m, v;
int pos[100005];
stack<pair<int, int> > S;
int main() {
  scanf("%d%d%d", &n, &m, &v);
  if (m < n - 1) {
    printf("-1\n");
    return 0;
  }
  for (int i = 1; i <= n; ++i) pos[i] = i;
  swap(pos[v], pos[n]);
  for (int i = 1; i <= n - 1; ++i) S.push(make_pair(pos[i], pos[n]));
  m -= n - 1;
  int tmp = n - 1;
  for (int i = 1; i < tmp; ++i)
    if (m != 0)
      for (int j = i + 1; j < tmp; ++j) {
        S.push(make_pair(pos[i], pos[j]));
        if (--m == 0) break;
      }
  if (m == 0) {
    while (!S.empty()) {
      int a = S.top().first;
      int b = S.top().second;
      if (a > b) swap(a, b);
      printf("%d %d\n", a, b);
      S.pop();
    }
  } else
    printf("-1\n");
  return 0;
}
