#include using namespace std; int main() { int N, M, K; cin >> N >> M >> K; int T = N * (N - 1) / 2; // 判定もかなり適当 if (K == 1 && M == T) { cout << "No\n"; return 0; } cout << "Yes\n"; // WRONG: // 本来はちょうど M 本出力しなければならないが、 // 適当に「1 と N に関係しない辺」だけを出す。 // M が大きいと、出力本数が M に足りなくなる。 int cnt = 0; for (int u = 2; u <= N - 1; ++u) { for (int v = u + 1; v <= N - 1; ++v) { if (cnt < M) { cout << u << ' ' << v << '\n'; cnt++; } } } return 0; }