#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rrep(i, n) for(int i = n-1; i >= 0; i--)
#define  all(x) (x).begin(),(x).end()     // 昇順ソート
#define  rall(v) (v).rbegin(), (v).rend() // 降順ソート
#define  FastIO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
typedef long long ll;
using P = pair<int,int>;
using VI = vector<int>;
using VVI = vector<vector<int>>;
using VL = vector<ll>;
using VVL = vector<vector<ll>>;
using VP = vector<P>;
template<class T> bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T> bool chmin(T &a, const T &b) { if (a>b) { a=b; return true; } return false; }

const ll INF = 1LL<<60;

int main(){
    int d;
    ll g;
    cin >> d >> g;
    VP q(d);
    rep(i,d) cin >> q[i].first >> q[i].second;

    VI p(d);
    rep(i,d) p[i] = i;

    ll ans = INF;
    do{
        VI pp(d);
        rep(i,d) pp[p[i]] = i;

        ll gg = g;
        ll cnt = 0;
        rep(i,d){
            int j = pp[i];
            ll pc = (j + 1) * 100;
            ll num = min((ll)q[j].first, ((gg + (pc-1)) / pc));
            cnt += num;

            gg -= pc * num;
            gg -= q[j].second;

            if (gg <= 0) break;
        }

        ans = min(ans, cnt);

    } while(next_permutation(all(p)));

    cout << ans << endl;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

#define REP(i, n) for(ll i = 0; i < n; i++)
#define REPR(i, n) for(ll i = n; i >= 0; i--)
#define FOR(i, m, n) for(ll i = m; i < n; i++)
#define ALL(obj) (obj).begin(), (obj).end()
#define INF 1e9
#define LINF 1e18


int main() {
    int D,G; cin >> D >> G;
    vector<pair<ll,ll>> score(D+1);
    REP(i,D){
        int p,c; cin >> p >> c;
        score[i] = {p,c};
    }
    
    int ans = INF;
    REP(bit, 1<<D){
        vector<int> S(D,0);
        int sum = 0;
        int cnt = 0;

        REP(i,D){
            if(bit & (1<<i)){
                S[i] = 1;
                sum += score[i].first*(i+1)*100 + score[i].second;
                cnt += score[i].first;
            }
        }

        if(G<=sum){
            ans = min(ans, cnt);
            continue;
        }

        REPR(i,D-1){
            if(S[i]==1) continue;
            REP(j,score[i].first){
                sum += 100*(i+1);
                cnt++;


                if(G<=sum){
                    ans = min(ans, cnt);
                    continue;
                }
            }
        }
        ans = min(ans, cnt);
    }
    cout << ans << endl;

    return 0;
}