#include<stdio.h>
long n,l,i,tmin,ta[101],ca[101],sa[101],tb[101],cb[101],sb[101],s,d,m,ok;
void citire();
void back(long T,long A,long B,long I);
void print_sol();
int main()
{ citire();
s=0;d=101;
while(d-s-1)
{ m=(s+d)/2;
ok=0;
back(0,l,l,1);
if(ok)d=m;
else s=m;
}
tmin=d;
print_sol();
return 0;
}
void back(long T,long A,long B,long I)
{
long a,b,time;
if(!A&&!B)
{ if(T<=m)
{ for(i=1;i<I;i++){sa[i]=ca[i];sb[i]=cb[i];}
for(i=I;i<=n;i++){sa[i]=0;sb[i]=0;}
ok=1;
}
return;
}
if(I==n+1)return;
for(a=0;a<=A;a++)
for(b=0;b<=B;b++)
{ time=a*ta[I]+b*tb[I];
if(time>m)break;
time=(time>T)?time:T;
ca[I]=a;cb[I]=b;
back(time,A-a,B-b,I+1);
if(ok)return;
}
}
void citire()
{
freopen("lapte.in","rt",stdin);
scanf("%ld%ld",&n,&l);
for(i=1;i<=n;i++) scanf("%ld%ld",&ta[i],&tb[i]);
tmin=101;
}
void print_sol()
{
freopen("lapte.out","wt",stdout);
printf("%ld\n",tmin);
for(i=1;i<=n;i++)printf("%ld %ld\n",sa[i],sb[i]);
}