#include <bits/stdc++.h>
using namespace std;
long long int mod_expo(long long int x, long long int y) {
  long long int res = 1;
  while (y > 0) {
    if (y & 1) res = (res * x);
    y = y >> 1;
    x = (x * x);
  }
  return res;
}
struct node {
  char a;
  long long int in;
};
bool compare(node p, node q) { return (p.a < q.a); };
long long int Gcd(long long int a, long long int b, long long int* x,
                  long long int* y) {
  if (a == 0) {
    *x = 0;
    *y = 1;
    return b;
  }
  long long int x1, y1;
  long long int g = Gcd(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return g;
}
int main() {
  long long int t = 1;
  while (t--) {
    long long int n, m, v, a;
    cin >> n >> m >> v;
    if (m < n - 1 || m > (((n - 1) * (n - 2)) / 2) + 1) {
      cout << -1 << endl;
      continue;
    } else {
      a = n;
      if (v == n) a--;
      for (long long int i = 1; i <= n && m > 0; i++) {
        if (i == v) continue;
        cout << v << " " << i << endl;
        m--;
      }
      for (long long int i = 1; i <= n && m > 0; i++) {
        if (i == v || i == a) continue;
        for (long long int j = i + 1; j <= n && m > 0; j++) {
          if (j == a || j == v) continue;
          cout << i << " " << j << endl;
          m--;
        }
      }
    }
  }
  return 0;
}
