#include <bits/stdc++.h>
using namespace std;
int n, maxh, reg;
int pw[1005], deg[1005];
int sum100 = 0;
bool used[1005];
int main(void) {
  scanf("%d%d%d", &n, &maxh, &reg);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &pw[i], &deg[i]);
    if (pw[i] == 100) sum100 += deg[i];
  }
  if (sum100 <= reg) {
    printf("NO\n");
  } else {
    int total = 0;
    vector<pair<int, int> > ans;
    priority_queue<pair<int, int>, vector<pair<int, int> > > q;
    for (int i = 0; i < n; i++) {
      if (pw[i] == 100) {
        q.push(make_pair(deg[i], i + 1));
        used[i] = 1;
      }
    }
    int curh = maxh;
    int curd = 0;
    double eps = 1e-9;
    while (true) {
      curh -= curd;
      curh = min(curh + reg, maxh);
      if (curh <= 0) {
        break;
      }
      for (int i = 0; i < n; i++) {
        if (!used[i]) {
          int maxallow = (1.0 * maxh / 100 * pw[i] + eps);
          if (curh <= maxallow) {
            q.push(make_pair(deg[i], i + 1));
            used[i] = 1;
          }
        }
      }
      if (q.size()) {
        int nextd = q.top().first;
        int idx = q.top().second;
        ans.push_back(make_pair(total, idx));
        curd += nextd;
        q.pop();
      }
      if (curh <= 0) break;
      total++;
    }
    printf("YES\n");
    printf("%d %d\n", total, ans.size());
    for (int i = 0; i < ans.size(); i++) {
      printf("%d %d\n", ans[i].first, ans[i].second);
    }
  }
  return 0;
}
