#include <bits/stdc++.h>
using namespace std;
struct scroll {
  int first;
  int second;
  int index;
};
bool compare(scroll a, scroll b) {
  if (a.first != b.first) {
    return a.first > b.first;
  }
  return a.second > b.second;
}
int main() {
  int N, max, reg, power(0), now, time(-1), total(0);
  vector<scroll> s;
  vector<pair<long long, long long> > u;
  cin >> N >> max >> reg;
  for (int i(0); i < (N); i++) {
    int p, d;
    scroll l;
    cin >> p >> d;
    l.first = p;
    l.second = d;
    l.index = 1 + i;
    s.push_back(l);
  }
  scroll l;
  l.first = -1;
  sort(s.begin(), s.end(), compare);
  s.push_back(l);
  now = max;
  for (int i(0); i < (N); i++) {
    if (s[i].first == 100) {
      total += s[i].second;
    }
  }
  if (total <= reg) {
    cout << "NO";
    return 0;
  }
  cout << "YES" << endl;
  for (int i(0); i < (N + 1); i++) {
    do {
      time++;
      now -= power;
      now += reg;
      if (now > max) {
        now = max;
      }
      if (now <= 0) {
        goto loop;
      }
    } while ((double(now) / double(max) * 100) > double(s[0].first));
    int m(0), mid;
    for (int j(0); j < (s.size()); j++) {
      if ((s[j].second > m) &&
          ((double(now) / double(max) * 100) <= double(s[j].first))) {
        m = s[j].second;
        mid = j;
      }
    }
    u.push_back(pair<long long, long long>(time, s[mid].index));
    power += s[mid].second;
    s.erase(s.begin() + mid);
  }
loop:;
  cout << time << " " << u.size() << endl;
  for (int i(0); i < (u.size()); i++) {
    cout << u[i].first << " " << u[i].second << endl;
  }
}
