#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define vl vector<ll>

int main() {

    ll D, G;
    cin >> D >> G;

    vl p(D), c(D);
    rep(i, D) cin >> p[i] >> c[i];

    int ans = 1e9;
    rep(i, 1<<D) {
        vl P = p;
        int prob = 0;
        ll score = 0;
        rep(j, D) {
            if (i>>j&1) {
                score += ((j+1) * 100 * P[j]);
                score += c[j];
                prob += P[j];
                P[j] = 0;
            }
        }
        int itr = D-1;
        bool ok = true;
        while(score < G) {
            while (P[itr] < 1) {
                itr--;
                if (itr < 0) {
                    ok = false;
                    break;
                }
            }
            if (ok) {
                score += ((itr+1)*100);
                prob++;
                P[itr]--;
            }
            else break;
        }

        if (ok) ans = min(prob, ans);
        // cout << "i: " << i << "  score: " << score << "  prob: " << prob << endl;
        // rep(j, D) cout << (j+1)*100 << ": " << p[j] - P[j] << endl;
    }

    cout << ans << endl;

    return 0;
}

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define ALL(v) v.begin(), v.end()
typedef long long ll;

#include <bits/stdc++.h>
using namespace std;

ll dp[11][210000];
const int INF=1e9;

int main() {
  ll d,g;
  cin>>d>>g;
  g/=100;
  
  vector<int> P(d+1),C(d+1);
  int x;
  rep(i,d){
    cin>>P[i+1]>>x;
    C[i+1]=x/100;
  }
  
  rep(i,11){
    rep(j,210000) dp[i][j]=INF;
  }
  dp[0][0]=0;
  
  for(int i=1;i<=d;i++){
    for(int j=0;j<=g+20000;j++){
      for(int k=0;k<P[i];k++){
        if(j-k*i<0) continue;
        dp[i][j]=min(dp[i][j],dp[i-1][j-k*i]+k);
      }
      if(j-P[i]*i-C[i]<0) continue;
      dp[i][j]=min(dp[i][j],dp[i-1][j-P[i]*i-C[i]]+P[i]);
    }
  }
  ll ans=INF;
  for(int i=g;i<=g+20000;i++){
    ans=min(ans,dp[d][i]);
  }
  cout<<ans<<endl;

  return 0;
}