#include <iostream>
#include<fstream>
#include<vector>
using namespace std;
vector< pair<int,int> > ans;
int best[105][105],i,j,n,a[105],b[105],x,p,u,m,l,q,k,tt[105][105],lin,col;
bool check()
{
x=m;
for(i=0;i<=n;i++)
for(j=0;j<=l;j++)
best[i][j]=0;
for(i=1;i<=n;i++)
for(j=0;j<=x/a[i];j++)
{
q=(x-(j*a[i]))/b[i];
for(k=0;k<=l-j;k++)
{
if(best[i-1][k]!=0||(i-1==0&&k==0))
{
if(best[i-1][k]+q>best[i][k+j])
{best[i][k+j]=best[i-1][k]+q;tt[i][k+j]=k;}
}
}
}
return (best[n][l]>=l);
}
int main()
{
ifstream f("lapte.in");
ofstream g("lapte.out");
f>>n>>l;
for(i=1;i<=n;i++)
{
f>>a[i]>>b[i];
}
p=1;u=100;
while(u-p>1)
{
m=(p+u)/2;
if(check()) u=m;
else p=m;
}
g<<u<<'\n';lin=n;col=l;
while(lin!=0)
{
ans.push_back(make_pair(col-tt[lin][col],best[lin][col]-best[lin-1][tt[lin][col]]));
col=tt[lin][col];lin--;
}
for(i=ans.size()-1;i>=0;i--)
{
g<<ans[i].first<<' '<<ans[i].second<<'\n';
}
return 0;
}