A programming competition site AtCode provides algorithmic problems. Each problem is allocated a score based on its difficulty. Currently, for each integer i between 1 and D (inclusive), there are p_i problems with a score of 100i points. These p_1 + … + p_D problems are all of the problems available on AtCode.

A user of AtCode has a value called total score. The total score of a user is the sum of the following two elements:

* Base score: the sum of the scores of all problems solved by the user.
* Perfect bonuses: when a user solves all problems with a score of 100i points, he/she earns the perfect bonus of c_i points, aside from the base score (1 ≤ i ≤ D).



Takahashi, who is the new user of AtCode, has not solved any problem. His objective is to have a total score of G or more points. At least how many problems does he need to solve for this objective?

Constraints

* 1 ≤ D ≤ 10
* 1 ≤ p_i ≤ 100
* 100 ≤ c_i ≤ 10^6
* 100 ≤ G
* All values in input are integers.
* c_i and G are all multiples of 100.
* It is possible to have a total score of G or more points.

Input

Input is given from Standard Input in the following format:


D G
p_1 c_1
:
p_D c_D


Output

Print the minimum number of problems that needs to be solved in order to have a total score of G or more points. Note that this objective is always achievable (see Constraints).

Examples

Input

2 700
3 500
5 800


Output

3


Input

2 2000
3 500
5 800


Output

7


Input

2 400
3 500
5 800


Output

2


Input

5 25000
20 1000
40 1000
50 1000
30 1000
1 1000


Output

66
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.OutputStream;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileWriter;

import java.util.*;
import java.util.stream.LongStream;

public class Main {
    // 標準入力
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    // 標準入力数値配列用 int
    static int[] inputval() throws Exception {
        String[] strarray = br.readLine().trim().split(" ");
        int[] intarray = new int[strarray.length];
        for (int i = 0; i < intarray.length; i++) {
            intarray[i] = Integer.parseInt(strarray[i]);
        }
        return intarray;
    }

    /* 標準入力数値配列用 long */
    static long[] inputLongArr() throws Exception {
        String[] strarray = br.readLine().trim().split(" ");
        long[] longarray = new long[strarray.length];
        for (int i = 0; i < longarray.length; i++) {
            longarray[i] = Long.parseLong(strarray[i]);
        }
        return longarray;
    }

    // 標準入力数値リスト用 int
    static List<Integer> inputIntList() throws Exception {
        List<String> strList = Arrays.asList(br.readLine().trim().split(" "));
        List<Integer> intList = new ArrayList<Integer>();
        for (String elem : strList){
            intList.add(Integer.parseInt(elem));
        }
        return intList;
    }

    // 標準入力数値配列用 integer 降順ソート用
    static Integer[] inputvalInteger() throws Exception {
        String[] strarray = br.readLine().trim().split(" ");
        Integer[] intarray = new Integer[strarray.length];
        for (int i = 0; i < intarray.length; i++) {
            intarray[i] = Integer.parseInt(strarray[i]);
        }
        return intarray;
    }

    /*標準入力long*/
    static long inputLong() throws Exception {
        return Long.parseLong(br.readLine());
    }

    /*標準入力long*/
    static int inputInt() throws Exception {
        return Integer.parseInt(br.readLine());
    }



    public static void main(String[] args) throws Exception {
        // write your code here
        long [] dg = inputLongArr();
        long d = dg[0];
        long g = dg[1];
        int [][] pcl = new int [(int)d][2];
        for(int i=0; i<d; i++){
            int [] pc = inputval();
            pcl[i] = pc;
        }
        long cnt = Integer.MAX_VALUE;

        // ボーナスがもらえるかどうかで全探索
        for(int i=0; i<Math.pow(2,d);i++){
            long sum = 0;
            long tmpC = 0;
            // ボーナス受け取り判定 -1 未
            int [] done = new int [(int)d];
            for (int j=0; j<d; j++){
                done[j] = -1;
            }

            for (int j=0; j<d; j++) {
                if ((1&i>>j) == 1){
                    sum += pcl[j][1] + pcl[j][0] * 100 * (j+1);
                    tmpC += pcl[j][0];
                    done[j] = 0;
                }
            }

            // 加算するボーナスなし通常の値を決定
            int ci = -1;
            for (int j=(int)d-1; j>=0; j--){
                if(done[j] == -1){
                    ci = j;
                    break;
                }
            }
            // ボーナスなし通常の値を加算
            if (ci != -1){
                for (int j=1; j<pcl[ci][0]; j++){
                    if (sum >= g){
                        break;
                    }
                    sum += 100 * (ci +1);
                    tmpC ++;
                }
            }

            if (sum >= g){
                cnt = Math.min(cnt, tmpC);
            }
        }


        System.out.println(cnt);







    }

}

