#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  char c = getchar();
  long long f = 1, x = 0;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = (x << 1) + (x << 3) + (c ^ '0');
    c = getchar();
  }
  return x * f;
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
struct per {
  long long hpx, damg, flag;
} node[2222];
bool CMP(per x, per y) {
  if (x.damg == y.damg) {
    return x.hpx < y.hpx;
  }
  return x.damg > y.damg;
}
int main() {
  long long n = read(), hp = read(), rate = read(), k1 = 0, k2 = 0, add,
            shanghai = 0, flag1, hpm, sum[2222], e = 0, num[2222];
  hpm = hp;
  for (int i = 0; i < n; i++) {
    cin >> node[i].hpx >> node[i].damg;
    node[i].flag = 0;
    node[i].hpx = node[i].hpx * 1.0 / 100 * hpm;
  }
  for (int i = 0; i <= 6666; i++) {
    hp = min(hp + rate, hpm);
    if (hp <= 0) {
      add = i;
      break;
    }
    shanghai = 0;
    for (int j = 0; j < n; j++) {
      if (node[j].hpx >= hp && node[j].flag == 0) {
        shanghai = max(shanghai, node[j].damg);
        if (shanghai == node[j].damg) {
          flag1 = j;
        }
      }
    }
    if (shanghai != 0) {
      sum[e] = i;
      num[e] = flag1 + 1;
      e++;
      node[flag1].flag = 1;
      rate = rate - node[flag1].damg;
    }
  }
  if (hp <= 0) {
    printf("YES\n");
    printf("%lld %lld\n", add, e);
    for (int i = 0; i < e; i++) {
      if (i == 0) {
        printf("0 %lld\n", num[i]);
        continue;
      }
      printf("%lld %lld\n", sum[i], num[i]);
    }
  } else {
    printf("NO");
  }
  return 0;
}
