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 = float("inf")

for i in range(1 << D) : # 2**D

    ct = 0 #cost

    score = 0

    for j in range(D) :

        if (i >> j) & 1 : #bit全探索

            score += C[j] #bonus

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

            ct += P[j] #cost

    for j in range(D-1,-1,-1) : #降順

        if score >= G : 

            break

        if (i >> j) & 1 : #すでに計算された得点帯を除外

            continue

        g = (j+1)*100

        got = (G-score)//g

        score += min(got,P[j])*g

        ct += min(got,P[j])

    ans = min(ans, ct)

print(ans)

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

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



ans = float("inf")

for bit in range(2 ** D) :

    score = 0

    AC = 0

    for k in range(D) :

        if bit & (1 << k) :

            p,c = L[k]

            score += c

            AC += p

            score += p*(k+1)*100

    if score >= G :

        ans = min(ans,AC)

        continue

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

        if bit & (1 << k) :

            continue

        p,c = L[k]

        if (score + p*(k+1)*100) < G :

            score += p*(k+1)*100

            AC += p

        else :

            rem = G - score

            AC += rem // ((k+1)*100)

            if rem % ((k+1)*100) != 0 :

                AC += 1

            ans = min(ans,AC)

            break

print(ans)



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 = float("inf")
for i in range(1 << D):  # 2**D
    ct = 0  # cost
    score = 0
    for j in range(D):
        if (i >> j) & 1:  # bit全探索
            score += C[j]  # bonus
            score += P[j] * (j + 1) * 100  # normal
            ct += P[j]  # cost
    for j in range(D - 1, -1, -1):  # 降順
        if score >= G:
            break
        if (i >> j) & 1:  # すでに計算された得点帯を除外
            continue
        g = (j + 1) * 100
        got = (G - score) // g
        score += min(got, P[j]) * g
        ct += min(got, P[j])
    ans = min(ans, ct)
print(ans)

D, G = list(map(int, input().split()))
L = [list(map(int, input().split())) for i in range(D)]
ans = float("inf")
for bit in range(2**D):
    score = 0
    AC = 0
    for k in range(D):
        if bit & (1 << k):
            p, c = L[k]
            score += c
            AC += p
            score += p * (k + 1) * 100
    if score >= G:
        ans = min(ans, AC)
        continue
    for k in range(D - 1, -1, -1):
        if bit & (1 << k):
            continue
        p, c = L[k]
        if (score + p * (k + 1) * 100) < G:
            score += p * (k + 1) * 100
            AC += p
        else:
            rem = G - score
            AC += rem // ((k + 1) * 100)
            if rem % ((k + 1) * 100) != 0:
                AC += 1
            ans = min(ans, AC)
            break
print(ans)

-P = [] -C = [] -for i in range(D): -    p, c = list(map(int, input().split())) -    P.append(p) -    C.append(c) +L = [list(map(int, input().split())) for i in range(D)] -for i in range(1 << D):  # 2**D -    ct = 0  # cost +for bit in range(2**D): -    for j in range(D): -        if (i >> j) & 1:  # bit全探索 -            score += C[j]  # bonus -            score += P[j] * (j + 1) * 100  # normal -            ct += P[j]  # cost -    for j in range(D - 1, -1, -1):  # 降順 -        if score >= G: +    AC = 0 +    for k in range(D): +        if bit & (1 << k): +            p, c = L[k] +            score += c +            AC += p +            score += p * (k + 1) * 100 +    if score >= G: +        ans = min(ans, AC) +        continue +    for k in range(D - 1, -1, -1): +        if bit & (1 << k): +            continue +        p, c = L[k] +        if (score + p * (k + 1) * 100) < G: +            score += p * (k + 1) * 100 +            AC += p +        else: +            rem = G - score +            AC += rem // ((k + 1) * 100) +            if rem % ((k + 1) * 100) != 0: +                AC += 1 +            ans = min(ans, AC) -        if (i >> j) & 1:  # すでに計算された得点帯を除外 -            continue -        g = (j + 1) * 100 -        got = (G - score) // g -        score += min(got, P[j]) * g -        ct += min(got, P[j]) -    ans = min(ans, ct)