#include <bits/stdc++.h>
using namespace std;
bool vis[10005];
struct spell {
  int t, i;
};
struct scroll {
  int pow, dmg, i;
  bool operator<(const scroll &a) const { return dmg < a.dmg; }
};
priority_queue<scroll> q;
spell ans[10005];
bool comp(scroll a, scroll b) {
  return a.pow > b.pow || (a.pow == b.pow && a.dmg > b.dmg);
}
int main() {
  int n, hel, reg;
  scanf("%d%d%d", &n, &hel, &reg);
  for (int i = 0; i < n; i++) {
    scroll s;
    scanf("%d%d", &s.pow, &s.dmg);
    s.i = i + 1;
    q.push(s);
  }
  bool flag = true, pik = false;
  int admg = 0, point = 0;
  int h = hel, t = 0;
  while (1) {
    if (vis[h] && (!pik)) {
      flag = false;
      break;
    }
    vis[h] = true;
    double check = h * 100;
    check /= hel;
    pik = false;
    stack<scroll> st;
    while (!q.empty()) {
      scroll pp = q.top();
      q.pop();
      if (pp.pow >= check) {
        ans[point].t = t;
        ans[point].i = pp.i;
        admg += pp.dmg;
        point++;
        pik = true;
        break;
      }
      st.push(pp);
    }
    while (!st.empty()) {
      scroll pp = st.top();
      st.pop();
      q.push(pp);
    }
    t++;
    h -= admg;
    h += reg;
    if (h <= 0) break;
    if (h > hel) h = hel;
  }
  if (flag) {
    printf("YES\n");
    printf("%d %d\n", t, point);
    for (int i = 0; i < point; i++) {
      printf("%d %d\n", ans[i].t, ans[i].i);
    }
  } else
    printf("NO\n");
}
