#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <algorithm>
#include <utility>
#include <string>
#include <functional>
#include <sstream>
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
#define FOR(i,a,b) for (i=a;i<=b;i++)
#define fori(it,v) for (it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) c.begin(),c.end()
#define pf push_front
#define popb pop_back
#define popf pop_front
FILE *in,*out;
pair<int,int> marc[105][105][105];
int L,n,a[105],b[105];
const int inf=1<<20;
int ver(int x)
{
int i,j,k,q;
memset(marc,0,sizeof(marc));
marc[0][0][0].fi=inf;
marc[0][0][0].se=inf;
FOR(i,1,n)
FOR(j,0,L)
FOR(k,0,L)
if (marc[i][j][k].fi+marc[i][j][k].se||marc[i-1][j][k].fi+marc[i-1][j][k].se)
{
if (marc[i-1][j][k].se+marc[i-1][j][k].fi)
marc[i][j][k]=mp(0,0);
q=min(j+1,L);
if (marc[i][j][k].fi+marc[i][j][k].se+a[i]<=x&&q!=j&&(marc[i][j][k].fi+marc[i][j][k].se+a[i]<marc[i][q][k].fi+marc[i][q][k].se||marc[i][q][k].fi+marc[i][q][k].se==0))
marc[i][q][k]=mp(marc[i][j][k].fi+a[i],marc[i][j][k].se);
q=min(k+1,L);
if (marc[i][j][k].fi+marc[i][j][k].se+b[i]<=x&&q!=k&&(marc[i][j][k].fi+marc[i][j][k].se+b[i]<marc[i][j][q].fi+marc[i][j][q].se||marc[i][j][q].fi+marc[i][j][q].se==0))
marc[i][j][q]=mp(marc[i][j][k].fi,marc[i][j][k].se+b[i]);
if (marc[i][j][k].fi+marc[i][j][k].se==0)
marc[i][j][k]=mp(inf,inf);
}
if (marc[n][L][L].fi+marc[n][L][L].se)
return 1;
return 0;
}
void afis(int x,int y,int z)
{
if (x==0)
return ;
if (marc[x][y][z]==mp(inf,inf))
{
afis(x-1,y,z);
fprintf(out,"0 0\n");
return;
}
afis(x-1,y-marc[x][y][z].fi/a[x],z-marc[x][y][z].se/b[x]);
fprintf(out,"%d %d\n",marc[x][y][z].fi/a[x],marc[x][y][z].se/b[x]);
}
int main()
{
int i,rez=0;
in=fopen("lapte.in","r");
out=fopen("lapte.out","w");
fscanf(in,"%d%d",&n,&L);
FOR(i,1,n)
{
fscanf(in,"%d%d",&a[i],&b[i]);
}
for(i=1<<8;i;i>>=1)
{
rez+=i;
if (ver(rez))
rez-=i;
}
rez++;
ver(rez);
fprintf(out,"%d\n",rez);
afis(n,L,L);
fclose(in);
fclose(out);
return 0;
}