#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int N,L,timpRamas[113];
int timpCautat = 1000;
struct om
{
int laptea;
int lapteb;
int i;
};
om Persoane[113],solutieCurenta[113],solutieFinala[113];
bool greedy(const om & pers1, const om & pers2)
{
return (pers1.laptea - pers1.lapteb) < (pers2.laptea - pers2.lapteb);
}
bool revenire(const om & pers1,const om & pers2)
{
return pers1.i < pers2.i;
}
void CautareBin(int st , int dr)
{
if(st<=dr)
{
int nebautA,nebautB;
int mij = (st+dr)/2;
for(int i = 0 ; i < N ; i ++)
{
timpRamas[i] = mij;
solutieCurenta[i].laptea = 0 ;
solutieCurenta[i].lapteb = 0;
solutieCurenta[i].i = Persoane[i].i;
}
nebautA=L;
nebautB=L;
for(int i=0; i<N && nebautA>0 ; i++)
{
int lapte=mij/Persoane[i].laptea;
if (lapte<=nebautA)
{
nebautA=nebautA-lapte;
timpRamas[i]=0;
solutieCurenta[i].laptea =solutieCurenta[i].laptea + lapte;
}
else
{
timpRamas[i]=timpRamas[i]-nebautA*Persoane[i].laptea;
solutieCurenta[i].laptea =solutieCurenta[i].laptea + nebautA;
nebautA = 0;
}
}
for(int i = N-1 ; i>=0 && nebautB>0;i--)
{
int lapte =timpRamas[i]/Persoane[i].lapteb;
if(lapte<=nebautB)
{
nebautB=nebautB-lapte;
timpRamas[i]=0;
solutieCurenta[i].lapteb=solutieCurenta[i].lapteb+lapte;
}
else
{
timpRamas[i]=timpRamas[i]-nebautB*Persoane[i].lapteb;
solutieCurenta[i].lapteb=solutieCurenta[i].lapteb+nebautB;
nebautB=0;
}
}
if(nebautA!=0 || nebautB!=0)
st = mij+1;
else
{
if(mij<timpCautat)
{
timpCautat = mij;
for(int i = 0 ; i < N ; i++)
{
solutieFinala[i].laptea = solutieCurenta[i].laptea;
solutieFinala[i].lapteb = solutieCurenta[i].lapteb;
solutieFinala[i].i= solutieCurenta[i].i;
}
}
dr = mij-1;
}
CautareBin(st,dr);
}
}
int main()
{
ifstream f("lapte.in");
ofstream g("lapte.out");
f>>N>>L;
for(int i= 0 ; i < N ; i++)
{
f>>Persoane[i].laptea>>Persoane[i].lapteb;
Persoane[i].i = i;
}
sort(Persoane,Persoane+N,greedy);
CautareBin(0,100);
g<<timpCautat<<endl;
sort(solutieFinala,solutieFinala+N,revenire);
for(int i = 0 ; i< N ; i++)
g<<solutieFinala[i].laptea<<" "<<solutieFinala[i].lapteb<<endl;
return 0;
}