#include<stdio.h>
#define max(a,b) ((a>=b)?a:b)
#define inf 0x3f3f3f3f
int a[10001],b[10001],c[2][10001],t[1001][1001],i,j,n,m,k,l,p,T,s[2][10001],nr;
FILE *in,*out;
int sol(int k){
int l,p,i,j,r,x,y;
for(i=0;i-T-1;i++)
c[0][i]=max((k-i*a[1])/b[1],0),c[1][i]=0;
for(i=2;i-n-1;i++){
x=k/a[i];
p=(1&i);r=1-p;
for(j=0;j-x-1;j++)
for(l=0;l-T-1;l++)
if(c[r][l+j]<c[p][l]+(k-j*a[i])/b[i])
c[r][l+j]=c[p][l]+(k-j*a[i])/b[i],t[i][l+j]=l;
}
return c[1-(1&n)][T]>=T;
}
void readdata(){
in=fopen("lapte.in","rt");
fscanf(in,"%d%d",&n,&T);
for(i=1;i-n-1;i++)
fscanf(in,"%d%d",&a[i],&b[i]);
fclose(in);
}
void solve(){
int p,u,max,i,j;
max=m=inf;
for(i=1;i-n-1;i++){
if(a[i]<max)
max=a[i];
if(max-a[i]&&b[i]<m)
m=b[i];
}
u=max(max,m)*T;
p=1;
while(p<=u){
m=(p+u)>>1;
if(sol(m))
u=m-1;
else
p=m+1;
}
}
void rebuild(){
int i,j;
nr=0;
i=n;j=T;
while(i){
s[0][i]=j-t[i][j];
s[1][i]=(m-s[0][i]*a[i])/b[i];
j=t[i][j];
i--;
}
}
void writedata(){
int i;
out=fopen("lapte.in","wt");
fprintf(out,"%d\n",m);
for(i=1;i<=n;i++)
fprintf(out,"%d %d\n",s[0][i],s[1][i]);
fclose(out);
}
int main(){
readdata();
solve();
//rebuild();
//writedata();
return 0;
}