#include<bits/stdc++.h>
#define MAX 30000000
using namespace std;
int n,L,f[2001][2],dp[MAX],maxx=0,ans=0;
int main(){
cin>>n>>L;
for(int i=1;i<=n;i++){
cin>>f[i][0]>>f[i][1];
maxx+=f[i][0];
ans+=f[i][1];
}
if(ans<L){
cout<<"no solution";
return 0;
}
if(ans==L){
cout<<maxx;
return 0;
}
for(int i=1;i<=n;i++){
for(int j=maxx;j>=f[i][0];j--){
dp[j%MAX]=max(dp[j%MAX],dp[(j-f[i][0])%MAX]+f[i][1]);
}
}
for(int i=0;i<=maxx;i++)
if(dp[i%MAX]>=L){
cout<<i;
return 0;
}
cout<<"no solution";
return 0;
}