#include <iostream>
using namespace std;
int p[11],c[11];
int d,g;
int mn = 1000000000;
int dfs(int n,int np,int nw,int ko){
  if(d+1 == n){
    //cout << n << " " << np << " " << nw << " " << ko << endl;
    if(nw >= g){
      mn = min(mn,ko);
    }else{
      if(p[np]*np+nw >= g){
        int tmp = ((g-nw)%np == 0 ? (g-nw)/np :(g-nw)/np+1);
        mn = min(mn,ko+tmp);
      }
    }
    return mn;
  }
  return min(mn,min(dfs(n+1,np,nw+p[n]*n+c[n],ko+p[n]),dfs(n+1,n,nw,ko)));

}
int main(){
  cin>>d>>g;g/=100;
  for(int i = 1; d >= i; i++){
    cin>>p[i]>>c[i];
    c[i] /= 100;
  }
  cout << dfs(1,0,0,0) << endl;//今の状態,解いてないもので一番高い点数,今の点数

}