#abc104c all green 

d, g = list(map(int, input().split()))

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

all_sum = []

for bit in range(1<<d):

    s = 0

    a = 0

    rest = []

    for i in range(d):

        if bit & (1<<i):

            s += pc[i][0]*100*(i+1) + pc[i][1]

            a += pc[i][0]

        else :

            rest.append(i)

    

    if s >= g :

        all_sum.append(a)

    else :

        k = max(rest)

        diff = g - s

        for j in range(pc[k][0]):

            if j*(k+1)*100 >= diff:

                all_sum.append(a+j)

print((min(all_sum)))
def dfs(i, sum, count, rest):

    global ans

    if i == d:

        if sum < g:

            rest_max = max(rest)

            n = min(l[rest_max-1][0], -(-(g-sum)//(rest_max*100)))

            count += n

            sum += n * rest_max * 100

        if sum >= g:

            ans = min(ans, count)

    else :

        dfs(i+1, sum, count, rest) #二分岐のうち解かない選択

        dfs(i+1, sum + l[i][0]*(i+1)*100+l[i][1], count + l[i][0], rest - {i+1}) #解く選択



d, g = list(map(int, input().split()))

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

ans = float("inf")

dfs(0, 0, 0, set(range(1, d+1)))

print(ans)

# abc104c all green
d, g = list(map(int, input().split()))
pc = [list(map(int, input().split())) for _ in range(d)]
all_sum = []
for bit in range(1 << d):
    s = 0
    a = 0
    rest = []
    for i in range(d):
        if bit & (1 << i):
            s += pc[i][0] * 100 * (i + 1) + pc[i][1]
            a += pc[i][0]
        else:
            rest.append(i)
    if s >= g:
        all_sum.append(a)
    else:
        k = max(rest)
        diff = g - s
        for j in range(pc[k][0]):
            if j * (k + 1) * 100 >= diff:
                all_sum.append(a + j)
print((min(all_sum)))

def dfs(i, sum, count, rest):
    global ans
    if i == d:
        if sum < g:
            rest_max = max(rest)
            n = min(l[rest_max - 1][0], -(-(g - sum) // (rest_max * 100)))
            count += n
            sum += n * rest_max * 100
        if sum >= g:
            ans = min(ans, count)
    else:
        dfs(i + 1, sum, count, rest)  # 二分岐のうち解かない選択
        dfs(
            i + 1,
            sum + l[i][0] * (i + 1) * 100 + l[i][1],
            count + l[i][0],
            rest - {i + 1},
        )  # 解く選択


d, g = list(map(int, input().split()))
l = [list((list(map(int, input().split())))) for _ in range(d)]
ans = float("inf")
dfs(0, 0, 0, set(range(1, d + 1)))
print(ans)

-# abc104c all green +def dfs(i, sum, count, rest): +    global ans +    if i == d: +        if sum < g: +            rest_max = max(rest) +            n = min(l[rest_max - 1][0], -(-(g - sum) // (rest_max * 100))) +            count += n +            sum += n * rest_max * 100 +        if sum >= g: +            ans = min(ans, count) +    else: +        dfs(i + 1, sum, count, rest)  # 二分岐のうち解かない選択 +        dfs( +            i + 1, +            sum + l[i][0] * (i + 1) * 100 + l[i][1], +            count + l[i][0], +            rest - {i + 1}, +        )  # 解く選択 + + -pc = [list(map(int, input().split())) for _ in range(d)] -all_sum = [] -for bit in range(1 << d): -    s = 0 -    a = 0 -    rest = [] -    for i in range(d): -        if bit & (1 << i): -            s += pc[i][0] * 100 * (i + 1) + pc[i][1] -            a += pc[i][0] -        else: -            rest.append(i) -    if s >= g: -        all_sum.append(a) -    else: -        k = max(rest) -        diff = g - s -        for j in range(pc[k][0]): -            if j * (k + 1) * 100 >= diff: -                all_sum.append(a + j) -print((min(all_sum))) +l = [list((list(map(int, input().split())))) for _ in range(d)] +ans = float("inf") +dfs(0, 0, 0, set(range(1, d + 1))) +print(ans)