#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int d[5003][10003];
int main()
{ int n,w,p[1003],e[1003],i,j,s=0,maxt=0;
in>>n>>w;
for(i=1;i<=n;i++){
in>>e[i]>>p[i];
s+=e[i];
maxt=max(maxt,e[i]);
}
// for(i=1;i<=maxt;i++)
// cout<<d[1][i]<<" ";
for(i=0;i<=n;i++)
for(j=0;j<=s;j++){
d[i][j]=50000;
}
for(i=1;i<=n;i++){
if(p[i]<d[1][e[i]]){
d[1][e[i]]=p[i];
d[2][e[i]+e[i]]=d[1][e[i]]+p[i];
}
else
d[2][e[i]]=p[i];
}
for(i=1;i<=n;i++){
for(j=1;j<=maxt;j++)
out<<d[i][j]<<" ";
out<<endl;
}
if(s<w){
out<<-1;
return 0;
}
for(i=2;i<=n;i++)
for(j=0;j<=s;j++){
d[i][j]=d[i-1][j];
d[i][j]=min(d[i][j],d[i-1][j-e[i]]+p[i]);
}
out<<endl<<endl;
for(i=1;i<=n;i++){
for(j=0;j<=s;j++)
out<<d[i][j]<<" ";
out<<endl;
}
int mint=50000;
for(j=w;j<=s;j++)
mint=min(mint,d[n][j]);
out<<mint;
return 0;
}