#include <bits/stdc++.h>
using namespace std;
struct node {
  int p, d;
  int id;
  node() {}
  node(int pp, int dd, int ii) : p(pp), d(dd), id(ii) {}
} scroll[1005];
struct op {
  int tim, id;
} ans[1005];
int use[1005];
int dp[1005][2];
bool cmp(node a, node b) { return a.d > b.d || (a.d == b.d && a.p > b.p); }
int main() {
  int i, J, n, st, rat, a, b, f, t1, tmp, na, rec;
  while (scanf("%d%d%d", &n, &st, &rat) != EOF) {
    na = 0;
    memset(scroll, 0, sizeof(scroll));
    memset(use, 0, sizeof(use));
    for (i = 0; i < n; i++) {
      scanf("%d%d", &a, &b);
      scroll[i] = node(a, b, i + 1);
    }
    sort(scroll, scroll + n, cmp);
    i = 0;
    tmp = st;
    while (tmp > 0) {
      i++;
      rec = -1;
      t1 = -1;
      for (J = 0; J < n; J++) {
        if (use[J] || scroll[J].p * st < tmp * 100) continue;
        if (t1 < scroll[J].d) {
          t1 = scroll[J].d;
          rec = J;
        }
      }
      if (t1 == -1 && rat >= 0) {
        printf("NO\n");
        goto the;
      }
      if (t1 == -1)
        tmp += rat;
      else {
        rat -= t1;
        use[rec] = 1;
        ans[na].tim = i - 1;
        ans[na].id = scroll[rec].id;
        na++;
        tmp += rat;
        if (tmp > st) tmp = st;
      }
    }
    printf("YES\n");
    printf("%d %d\n", i, na);
    for (J = 0; J < na; J++) {
      printf("%d %d\n", ans[J].tim, ans[J].id);
    }
  the:;
  }
}
