#includecstdio #includestdlib.h #includestring.h struct point{ int pow; int dmg; int num; }str[1010]; int visit[1010]; int ans1[1010],ans2[1010]; int cmp(const void *a,const void *b){ struct point *aa=(struct point *)a; struct point *bb=(st
#include<cstdio>
#include<stdlib.h>
#include<string.h>
struct point{
int pow;
int dmg;
int num;
}str[1010];
int visit[1010];
int ans1[1010],ans2[1010];
int cmp(const void *a,const void *b){
struct point *aa=(struct point *)a;
struct point *bb=(struct point *)b;
return bb->pow-aa->pow;
}
int Min(int a,int b){
return a<b?a:b;
}
int main(){
int n,max,res,i,j,k,t,temp=0;
scanf("%d %d %d",&n,&max,&res);
memset(visit,0,sizeof(visit));
for(i=1;i<=n;i++){
scanf("%d %d",&str[i].pow,&str[i].dmg);
str[i].num=i;
}
qsort(&str[1],n,sizeof(str[1]),cmp);
int now=max;
int sum=0;
for(t=0;;t++){
int tmp=-1,arr;
now=Min(now-sum+res,max);
if(now<=0)
break;
for(i=1;i<=n;i++){
if(now*100<=max*str[i].pow){
if(visit[i]==0){
if(tmp<str[i].dmg){
tmp=str[i].dmg;
arr=i;
}
}
}
}
if(tmp==-1 && sum<=res){
printf("NO\n");
break;
}
if(tmp!=-1){
ans1[++temp]=t;
ans2[temp]=str[arr].num;
visit[arr]=1;
sum+=str[arr].dmg;
}
}
if(now<=0){
printf("YES\n%d %d\n",t,temp);
for(i=1;i<=temp;i++){
printf("%d %d\n",ans1[i],ans2[i]);
}
}
}