#include <iostream>
#include <cstring>
#define INF 1000000000
using namespace std;
int cost[1000], value[1000], n, X, dp[1000][1000];
int solve(int idx, int val){
if(idx == n){
if(val >= X) return 0;
else return INF;
}
if(dp[idx][val] != -1) return dp[idx][val];
int v = solve(idx+1, val);
v = min(v, solve(idx+1, val + value[idx]) + cost[idx]);
return dp[idx][val] = v;
}
int main(){
cin >> n >> X;
for(int i = 0;i < n;i++){
cin >> cost[i] >> value[i];
}
memset(dp, -1, sizeof dp);
int ans = solve(0, 0);
if(ans != INF)cout << solve(0, 0) << endl;
else cout << "IMPOSSIBLE" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2RlZmluZSBJTkYgMTAwMDAwMDAwMAoKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgY29zdFsxMDAwXSwgdmFsdWVbMTAwMF0sIG4sIFgsIGRwWzEwMDBdWzEwMDBdOwoKaW50IHNvbHZlKGludCBpZHgsIGludCB2YWwpewogICAgaWYoaWR4ID09IG4pewogICAgICAgIGlmKHZhbCA+PSBYKSByZXR1cm4gMDsKICAgICAgICBlbHNlIHJldHVybiBJTkY7CiAgICB9CiAgICBpZihkcFtpZHhdW3ZhbF0gIT0gLTEpIHJldHVybiBkcFtpZHhdW3ZhbF07CiAgICBpbnQgdiA9IHNvbHZlKGlkeCsxLCB2YWwpOwogICAgdiA9IG1pbih2LCBzb2x2ZShpZHgrMSwgdmFsICsgdmFsdWVbaWR4XSkgKyBjb3N0W2lkeF0pOwogICAgcmV0dXJuIGRwW2lkeF1bdmFsXSA9IHY7Cn0KCmludCBtYWluKCl7CiAgICBjaW4gPj4gbiA+PiBYOwogICAgZm9yKGludCBpID0gMDtpIDwgbjtpKyspewogICAgICAgIGNpbiA+PiBjb3N0W2ldID4+IHZhbHVlW2ldOwogICAgfQogICAgbWVtc2V0KGRwLCAtMSwgc2l6ZW9mIGRwKTsKICAgIGludCBhbnMgPSBzb2x2ZSgwLCAwKTsKICAgIGlmKGFucyAhPSBJTkYpY291dCA8PCBzb2x2ZSgwLCAwKSA8PCBlbmRsOwogICAgZWxzZSBjb3V0IDw8ICJJTVBPU1NJQkxFIiA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0=