import itertools

from collections import Counter

D, G = list(map(int, input().split()))

P = [list(map(int, input().split())) for i in range(D)]

min_num = 10**8



judge_list = list(itertools.product([0, 1, 2], repeat=D)) #0:中途半端に解く 1:一問も解かない 2: 全部解く





for judge in judge_list:

    score = 0

    num = 0

    d = Counter() #インスタンスを生成

    d.update(judge)

    if (d[0] <= 1):

        for i in range(1, len(judge) + 1):

            if score >= G:

                break



            if judge[-i] == 1:

                pass



            if judge[-i] == 2:

                score += P[-i][0] * (D - i + 1) * 100 + P[-i][1]

                num += P[-i][0]



            if (judge[-i] == 0):

                for j in range(P[-i][0]):

                    if score >= G:

                        break

                    score += 100 * (D - i + 1)

                    num += 1

                        

        if score >= G:

            min_num = min(num, min_num)



print(min_num)           
import itertools



D, G = list(map(int, input().split()))

L = [list(map(int, input().split())) for _ in range(D)]



num = D #生成するビット数

bit_list = list(itertools.product([0, 1], repeat=num))

tmp = 10 ** 6



for bit in bit_list:

    count = 0

    num = 0

    for i in range(D):

        if bit[i] == 1:

            count += L[i][0] *(i+1) * 100 + L[i][1]

            num += L[i][0]

            

    if count >= G:

        tmp = min(num, tmp)

        

    else:

        for i in range(1, D+1):

            if bit[D-i] == 0:

                for j in range(L[D-i][0]):

                    count += (D-i+1) * 100

                    num += 1

                    if count >= G:

                        break

                break

                

        if count >= G:

            tmp = min(num, tmp)

            

print(tmp)
import itertools
from collections import Counter

D, G = list(map(int, input().split()))
P = [list(map(int, input().split())) for i in range(D)]
min_num = 10**8
judge_list = list(itertools.product([0, 1, 2], repeat=D))  # 0:中途半端に解く 1:一問も解かない 2: 全部解く
for judge in judge_list:
    score = 0
    num = 0
    d = Counter()  # インスタンスを生成
    d.update(judge)
    if d[0] <= 1:
        for i in range(1, len(judge) + 1):
            if score >= G:
                break
            if judge[-i] == 1:
                pass
            if judge[-i] == 2:
                score += P[-i][0] * (D - i + 1) * 100 + P[-i][1]
                num += P[-i][0]
            if judge[-i] == 0:
                for j in range(P[-i][0]):
                    if score >= G:
                        break
                    score += 100 * (D - i + 1)
                    num += 1
        if score >= G:
            min_num = min(num, min_num)
print(min_num)

import itertools

D, G = list(map(int, input().split()))
L = [list(map(int, input().split())) for _ in range(D)]
num = D  # 生成するビット数
bit_list = list(itertools.product([0, 1], repeat=num))
tmp = 10**6
for bit in bit_list:
    count = 0
    num = 0
    for i in range(D):
        if bit[i] == 1:
            count += L[i][0] * (i + 1) * 100 + L[i][1]
            num += L[i][0]
    if count >= G:
        tmp = min(num, tmp)
    else:
        for i in range(1, D + 1):
            if bit[D - i] == 0:
                for j in range(L[D - i][0]):
                    count += (D - i + 1) * 100
                    num += 1
                    if count >= G:
                        break
                break
        if count >= G:
            tmp = min(num, tmp)
print(tmp)

-from collections import Counter -P = [list(map(int, input().split())) for i in range(D)] -min_num = 10**8 -judge_list = list(itertools.product([0, 1, 2], repeat=D))  # 0:中途半端に解く 1:一問も解かない 2: 全部解く -for judge in judge_list: -    score = 0 +L = [list(map(int, input().split())) for _ in range(D)] +num = D  # 生成するビット数 +bit_list = list(itertools.product([0, 1], repeat=num)) +tmp = 10**6 +for bit in bit_list: +    count = 0 -    d = Counter()  # インスタンスを生成 -    d.update(judge) -    if d[0] <= 1: -        for i in range(1, len(judge) + 1): -            if score >= G: +    for i in range(D): +        if bit[i] == 1: +            count += L[i][0] * (i + 1) * 100 + L[i][1] +            num += L[i][0] +    if count >= G: +        tmp = min(num, tmp) +    else: +        for i in range(1, D + 1): +            if bit[D - i] == 0: +                for j in range(L[D - i][0]): +                    count += (D - i + 1) * 100 +                    num += 1 +                    if count >= G: +                        break -            if judge[-i] == 1: -                pass -            if judge[-i] == 2: -                score += P[-i][0] * (D - i + 1) * 100 + P[-i][1] -                num += P[-i][0] -            if judge[-i] == 0: -                for j in range(P[-i][0]): -                    if score >= G: -                        break -                    score += 100 * (D - i + 1) -                    num += 1 -        if score >= G: -            min_num = min(num, min_num) -print(min_num) +        if count >= G: +            tmp = min(num, tmp) +print(tmp)