#include <bits/stdc++.h>
using namespace std;
inline void read(int &x) {
  short negative = 1;
  x = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') negative = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9')
    x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
  x *= negative;
}
inline void write(long long x) {
  static long long sta[35];
  long long top = 0;
  do {
    sta[top++] = x % 10, x /= 10;
  } while (x);
  while (top) putchar(sta[--top] + 48);
  puts("");
}
bool prime(int n) {
  if (n == 0 || n == 1) return false;
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
const long long power(int n, int k) {
  long long t = 1;
  for (int i = 0; i < (int)(k); i++) t *= n;
  return t;
}
const string turn2(int n) {
  string s = "";
  while (n != 0) {
    s += (char)(n % 2 + '0');
    n /= 2;
  }
  reverse(s.begin(), s.end());
  return s;
}
const string turn16(int n) {
  string s = "";
  while (n != 0) {
    if (n % 16 > 9)
      s += (char)('A' + n % 16 - 10);
    else
      s += (char)('0' + n % 16);
    n /= 16;
  }
  reverse(s.begin(), s.end());
  return s;
}
const long long quickpower(int n, int k) {
  if (k == 1) return n;
  if (k % 2 == 1)
    return n * quickpower(n, k / 2) * quickpower(n, k / 2);
  else
    return quickpower(n, k / 2) * (quickpower(n, k / 2));
}
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};
int boss, reg, n, mx, now;
int use[1010];
struct node {
  double p;
  int s;
  int down;
} a[1010];
bool cmp(node x, node y) {
  if (x.p != y.p)
    return x.p > y.p;
  else
    return x.s > y.s;
}
int main() {
  cin >> n >> mx >> reg;
  for (int i = 0; i < (int)(n); i++) {
    double t;
    cin >> t >> a[i].s;
    use[i] = 0;
    a[i].p = t * 1.0 * mx / 100;
    a[i].down = i + 1;
  }
  sort(a, a + n, cmp);
  boss = mx;
  int time = -1;
  while (boss > 0) {
    time++;
    boss = min(mx, boss + reg);
    if (boss <= 0) break;
    int cnt1 = -1, cnt2 = 0;
    for (int i = 0; i < (int)(n); i++) {
      if (a[i].p >= boss && a[i].s > cnt2 && !use[i]) {
        cnt1 = i;
        cnt2 = a[i].s;
      }
    }
    use[cnt1] = time + 1;
    reg -= cnt2;
    if (cnt1 == -1 && reg >= 0) {
      cout << "NO" << endl;
      return 0;
    }
  }
  vector<pair<int, int> > ans;
  for (int i = 0; i < (int)(n); i++) {
    if (use[i]) {
      ans.push_back(pair<int, int>(use[i] - 1, a[i].down));
    }
  }
  cout << "YES" << endl;
  cout << time << " " << ans.size() << endl;
  sort(ans.begin(), ans.end());
  for (int i = 0; i < (int)(ans.size()); i++) {
    cout << ans[i].first << " " << ans[i].second << endl;
  }
  return 0;
}
