#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;
}