#include <bits/stdc++.h>
using namespace std;
const int maxn = 100100;
int n, d, k, cnt = 0;
bool ok(int n, int d, int k) {
  if (d == 1) return n <= 1;
  if (d == 2) return n <= (k + 1);
  long long tot = k + 1, x = k;
  for (int i = 2; i < d; i++) {
    x *= k - 1;
    tot += x;
    if (tot >= n) return 1;
  }
  return 0;
}
void dfs(int u, int dep, int fa) {
  if (cnt > n) return;
  printf("%d %d\n", fa, u);
  if (dep == d) return;
  for (int i = 2; i <= k; i++) dfs(++cnt, dep + 1, u);
}
int main() {
  scanf("%d%d%d", &n, &d, &k);
  if (!ok(n, d, k)) {
    puts("NO");
    return 0;
  } else
    puts("YES");
  cnt = 1;
  for (int i = 2; i <= k + 1; i++) dfs(++cnt, 2, 1);
  return 0;
}
