

import sys

input = sys.stdin.readline

sys.setrecursionlimit(10**6)

##############################



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

P = [] * D

C = [] * D

for i in range(D):

    p, c = list(map(int, input().split()))

    P.append(p)

    C.append(c)



ans = float('inf')

for i in range(1<<D):

    total = 0

    num = 0

    for j in range(D):

        if ((i >> j) & 1):

            total += C[j] + 100*P[j]*(j+1)

            num += P[j]



    if total >= G:

        ans = min(ans, num)

    else:

        for j in range(D-1, -1, -1):

            if ((i >> j) & 1):

                continue



            for k in range(P[j]-1):

                if total >= G:

                    break

                total += 100*(j+1)

                num += 1



        if total >= G:

            ans = min(ans, num)



print(ans)


import sys

input = sys.stdin.readline

sys.setrecursionlimit(2147483647)

INF=float("inf")

MOD=10**9+7

# A = [ int(input()) for _ in range(N) ]

##############################



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

P = []

C = []

for i in range(D):

    p, c = list(map(int, input().split()))

    P.append(p)

    C.append(c)



ans = INF

for i in range(1 << D):

    score = 0

    count = 0

    for j in range(D):

        if ((i >> j) & 1):

            score += (j+1)*P[j]*100+C[j]

            count += P[j]

        else:

            basic = j



    remain = G-score

    if remain <= 0:

        ans = min(ans, count)

        continue



#    print(remain, count, ans)



    # まだ残ってる場合、もっとも高いやつから

    if (remain - ( (P[basic]-1)*(basic+1)*100)) > 0:

        # 全部使っても駄目

        continue



    p = P[basic]

    while p > 1 and remain > 0:

        remain -= (basic+1)*100

        p -= 1

        count += 1



    if remain <= 0:

        ans = min(ans, count)



print(ans)
import sys

input = sys.stdin.readline
sys.setrecursionlimit(10**6)
##############################
D, G = list(map(int, input().split()))
P = [] * D
C = [] * D
for i in range(D):
    p, c = list(map(int, input().split()))
    P.append(p)
    C.append(c)
ans = float("inf")
for i in range(1 << D):
    total = 0
    num = 0
    for j in range(D):
        if (i >> j) & 1:
            total += C[j] + 100 * P[j] * (j + 1)
            num += P[j]
    if total >= G:
        ans = min(ans, num)
    else:
        for j in range(D - 1, -1, -1):
            if (i >> j) & 1:
                continue
            for k in range(P[j] - 1):
                if total >= G:
                    break
                total += 100 * (j + 1)
                num += 1
        if total >= G:
            ans = min(ans, num)
print(ans)

import sys

input = sys.stdin.readline
sys.setrecursionlimit(2147483647)
INF = float("inf")
MOD = 10**9 + 7
# A = [ int(input()) for _ in range(N) ]
##############################
D, G = list(map(int, input().split()))
P = []
C = []
for i in range(D):
    p, c = list(map(int, input().split()))
    P.append(p)
    C.append(c)
ans = INF
for i in range(1 << D):
    score = 0
    count = 0
    for j in range(D):
        if (i >> j) & 1:
            score += (j + 1) * P[j] * 100 + C[j]
            count += P[j]
        else:
            basic = j
    remain = G - score
    if remain <= 0:
        ans = min(ans, count)
        continue
    #    print(remain, count, ans)
    # まだ残ってる場合、もっとも高いやつから
    if (remain - ((P[basic] - 1) * (basic + 1) * 100)) > 0:
        # 全部使っても駄目
        continue
    p = P[basic]
    while p > 1 and remain > 0:
        remain -= (basic + 1) * 100
        p -= 1
        count += 1
    if remain <= 0:
        ans = min(ans, count)
print(ans)

-sys.setrecursionlimit(10**6) +sys.setrecursionlimit(2147483647) +INF = float("inf") +MOD = 10**9 + 7 +# A = [ int(input()) for _ in range(N) ] -P = [] * D -C = [] * D +P = [] +C = [] -ans = float("inf") +ans = INF -    total = 0 -    num = 0 +    score = 0 +    count = 0 -            total += C[j] + 100 * P[j] * (j + 1) -            num += P[j] -    if total >= G: -        ans = min(ans, num) -    else: -        for j in range(D - 1, -1, -1): -            if (i >> j) & 1: -                continue -            for k in range(P[j] - 1): -                if total >= G: -                    break -                total += 100 * (j + 1) -                num += 1 -        if total >= G: -            ans = min(ans, num) +            score += (j + 1) * P[j] * 100 + C[j] +            count += P[j] +        else: +            basic = j +    remain = G - score +    if remain <= 0: +        ans = min(ans, count) +        continue +    #    print(remain, count, ans) +    # まだ残ってる場合、もっとも高いやつから +    if (remain - ((P[basic] - 1) * (basic + 1) * 100)) > 0: +        # 全部使っても駄目 +        continue +    p = P[basic] +    while p > 1 and remain > 0: +        remain -= (basic + 1) * 100 +        p -= 1 +        count += 1 +    if remain <= 0: +        ans = min(ans, count)