#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("energii.in");
ofstream g ("energii.out");
int n,w;
struct{
int cost,energie;
}v[1001];
int dp[1001][10001];
void citire()
{
f >> n>> w;
for(int i = 1;i<=n;i++)
f >> v[i].energie>> v[i].cost;
}
void initiere()
{
for(int j = 0;j<=10000;j++)
{
dp[0][j] = 1<<30-1;
}
}
void afisare()
{
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=w;j++)
{
cout << dp[i][j]<< " ";
}
cout << endl;
}
}
void dp1()
{
for(int i = 1;i<=n;i++)
{
int cost_curent = v[i].cost;
int energie = v[i].energie;
for(int j = 1;j<=10000;j++)
{
if(j<=energie)
{
dp[i][j] = min(dp[i-1][j],cost_curent);
}
else
{
dp[i][j] = min(dp[i-1][j],dp[i-1][j-energie]+cost_curent);
}
}
}
(dp[n][w] != 1<<30-1)?g<<dp[n][w]:g << -1;
}
int main()
{
citire();
initiere();
dp1();
}