#include <fstream>
#define DIM 105
#define INF 0x3f3f3f3f
using namespace std;
ifstream fin("lapte.in");
ofstream fout("lapte.out");
int N,D[DIM][DIM],A[DIM],B[DIM],L,solmin,t[DIM][DIM];
void drum(int n,int l){
if(n==0)
return;
drum(n-1,l-t[n][l]);
fout<<t[n][l]<<" "<<(solmin-A[n]*t[n][l])/B[n]<<"\n";
}
int ok(int x){
for(int i=0;i<=N;i++){
for(int j=0;j<=L;j++)
D[i][j]=-INF;
D[i][0]=0;
}
for(int i=1;i<=N;i++){
int timp=x/A[i];
for(int nra=0;nra<=timp;nra++){
int nrb=(x-nra*A[i])/B[i];
for(int j=L;j>=nra;j--)
if(D[i][j]<D[i-1][j-nra]+nrb){
D[i][j]=D[i-1][j-nra]+nrb;
t[i][j]=nra;
}
}
}
return D[N][L]>=L;
}
int main(){
fin>>N>>L;
for(int i=1;i<=N;i++)
fin>>A[i]>>B[i];
int p=1,u=DIM;
while(p<=u){
int m=(p+u)/2;
if(ok(m)){
solmin=m;
u=m-1;
}
else
p=m+1;
}
fout<<solmin<<"\n";
drum(N,L);
fin.close();fout.close();
return 0;
}