# https://yukicoder.me/problems/no/3585 def main(): N, M, K = map(int, input().split()) lower = K upper = ((N - K) * (N - K - 1)) // 2 upper += (N - K) upper += K - 1 x = ((N * (N - 1)) // 2) - M if not (lower <= x <= upper): print("No") return ok_pair = set() base = 0 for i in range(K - 1): ok_pair.add((i, i + 1)) base += 1 ok_pair.add((base, N - 1)) for i in range(base, N): for j in range(i + 1, N): if (i, j) == (base, N - 1): continue ok_pair.add((i, j)) if len(ok_pair) == x: break if len(ok_pair) == x: break answer = set() for i in range(N): for j in range(i + 1, N): if (i, j) not in ok_pair: answer.add((i + 1, j + 1)) print("Yes") for u, v in answer: print(u, v) if __name__ == "__main__": main()