def main():



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

    A = []

    for i in range(D):

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

        A.append([i, p, c])

    A = A[::-1]



    cur = [[0, 0]]

    used = [set()]



    for i, p, c in A:

        temp = []

        temp_used = []

        for j in range(len(cur)):

            temp.append(cur[j])

            temp_used.append(used[j])

            temp.append([cur[j][0]+ 100*(i+1)*p+c, cur[j][1] + p])

            temp_used.append(used[j] | {i})

        cur = temp

        used = temp_used

    # 

    # print(cur)

    # print(used)



    ans = float('inf')

    for j in range(len(cur)):

        if cur[j][0] >= G:

            ans = min(ans, cur[j][1])

        else:

            for i, p, c in A:

                if i not in used[j]:

                    if cur[j][0] + 100 * (i+1) * (p-1) < G:

                        cur[j][0] += 100 * (i+1) * (p-1)

                        cur[j][1] += p-1

                    else:

                        if (G - cur[j][0]) % (100*(i+1)) == 0:

                            ans = min(ans, cur[j][1] + (G - cur[j][0]) // (100*(i+1)))

                        else:

                            ans = min(ans, cur[j][1] + (G - cur[j][0]) // (100*(i+1)) + 1)

                        break

    return ans







if __name__ == '__main__':

    print((main()))
def main():



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

    A = []

    for i in range(D):

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

        A.append([i, p, c])

    A = A[::-1]



    hs = [[0, 0, 0]]

    for i, p, c in A:

        temp = []

        for h, v, q in hs: temp.append([h|(1 << i), v+100*(i+1)*p+c, q+p])

        hs += temp



    # print(hs)



    ans = float('inf')

    for h, v, q in hs:

        if v >= G:

            ans = min(ans, q)

        else:

            for i, p, c in A:

                if (h >> i) % 2 == 0:

                    if v + 100*(i+1)*(p-1) < G:

                        v += 100*(i+1)*(p-1)

                        q += p-1

                    else:

                        if (G-v) % (100*(i+1)) == 0:

                            ans = min(ans, q + (G-v) // (100*(i+1)))

                        else:

                            ans = min(ans, q + 1 + (G-v) // (100*(i+1)))

                        break

    return ans



if __name__ == '__main__':

    print((main()))
def main():
    D, G = list(map(int, input().split()))
    A = []
    for i in range(D):
        p, c = list(map(int, input().split()))
        A.append([i, p, c])
    A = A[::-1]
    cur = [[0, 0]]
    used = [set()]
    for i, p, c in A:
        temp = []
        temp_used = []
        for j in range(len(cur)):
            temp.append(cur[j])
            temp_used.append(used[j])
            temp.append([cur[j][0] + 100 * (i + 1) * p + c, cur[j][1] + p])
            temp_used.append(used[j] | {i})
        cur = temp
        used = temp_used
    #
    # print(cur)
    # print(used)
    ans = float("inf")
    for j in range(len(cur)):
        if cur[j][0] >= G:
            ans = min(ans, cur[j][1])
        else:
            for i, p, c in A:
                if i not in used[j]:
                    if cur[j][0] + 100 * (i + 1) * (p - 1) < G:
                        cur[j][0] += 100 * (i + 1) * (p - 1)
                        cur[j][1] += p - 1
                    else:
                        if (G - cur[j][0]) % (100 * (i + 1)) == 0:
                            ans = min(
                                ans, cur[j][1] + (G - cur[j][0]) // (100 * (i + 1))
                            )
                        else:
                            ans = min(
                                ans, cur[j][1] + (G - cur[j][0]) // (100 * (i + 1)) + 1
                            )
                        break
    return ans


if __name__ == "__main__":
    print((main()))

def main():
    D, G = list(map(int, input().split()))
    A = []
    for i in range(D):
        p, c = list(map(int, input().split()))
        A.append([i, p, c])
    A = A[::-1]
    hs = [[0, 0, 0]]
    for i, p, c in A:
        temp = []
        for h, v, q in hs:
            temp.append([h | (1 << i), v + 100 * (i + 1) * p + c, q + p])
        hs += temp
    # print(hs)
    ans = float("inf")
    for h, v, q in hs:
        if v >= G:
            ans = min(ans, q)
        else:
            for i, p, c in A:
                if (h >> i) % 2 == 0:
                    if v + 100 * (i + 1) * (p - 1) < G:
                        v += 100 * (i + 1) * (p - 1)
                        q += p - 1
                    else:
                        if (G - v) % (100 * (i + 1)) == 0:
                            ans = min(ans, q + (G - v) // (100 * (i + 1)))
                        else:
                            ans = min(ans, q + 1 + (G - v) // (100 * (i + 1)))
                        break
    return ans


if __name__ == "__main__":
    print((main()))

-    cur = [[0, 0]] -    used = [set()] +    hs = [[0, 0, 0]] -        temp_used = [] -        for j in range(len(cur)): -            temp.append(cur[j]) -            temp_used.append(used[j]) -            temp.append([cur[j][0] + 100 * (i + 1) * p + c, cur[j][1] + p]) -            temp_used.append(used[j] | {i}) -        cur = temp -        used = temp_used -    # -    # print(cur) -    # print(used) +        for h, v, q in hs: +            temp.append([h | (1 << i), v + 100 * (i + 1) * p + c, q + p]) +        hs += temp +    # print(hs) -    for j in range(len(cur)): -        if cur[j][0] >= G: -            ans = min(ans, cur[j][1]) +    for h, v, q in hs: +        if v >= G: +            ans = min(ans, q) -                if i not in used[j]: -                    if cur[j][0] + 100 * (i + 1) * (p - 1) < G: -                        cur[j][0] += 100 * (i + 1) * (p - 1) -                        cur[j][1] += p - 1 +                if (h >> i) % 2 == 0: +                    if v + 100 * (i + 1) * (p - 1) < G: +                        v += 100 * (i + 1) * (p - 1) +                        q += p - 1 -                        if (G - cur[j][0]) % (100 * (i + 1)) == 0: -                            ans = min( -                                ans, cur[j][1] + (G - cur[j][0]) // (100 * (i + 1)) -                            ) +                        if (G - v) % (100 * (i + 1)) == 0: +                            ans = min(ans, q + (G - v) // (100 * (i + 1))) -                            ans = min( -                                ans, cur[j][1] + (G - cur[j][0]) // (100 * (i + 1)) + 1 -                            ) +                            ans = min(ans, q + 1 + (G - v) // (100 * (i + 1)))