def solve():

    inf = 1 << 60

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

    p = [0]

    c = [0]

    for i in range(D):

        pi, ci = list(map(int, input().split()))

        p.append(pi)

        c.append(ci)

    sump = sum(p)

    # dp[i][j] = 100i点の問題までで、j問解いて得られる最大の点数

    dp = [[-inf for j in range(sump+1)] for i in range(D+1)]

    dp[0][0] = 0

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

        for i in range(sump+1):

            for j in range(p[d]+1):

                if i - j >= 0:

                    dp[d][i] = max(dp[d][i], dp[d-1][i])

                    if dp[d-1][i-j] >= 0:

                        if j != p[d]:

                            dp[d][i] = max(dp[d][i], dp[d-1][i-j] + 100*d*j)

                        else:

                            dp[d][i] = max(dp[d][i], dp[d-1][i-j] + 100*d*j+c[d])

        #print(dp)

    for i in range(sump+1):

        if dp[D][i] >= G:

            return i



print((solve()))

def solve():

    inf = 1 << 60

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

    p = []

    c = []

    for i in range(D):

        pi, ci = list(map(int, input().split()))

        p.append(pi)

        c.append(ci)



    bitD = 1 << D

    min_cnt = inf

    for b in range(bitD):

        sc = 0

        cnt = 0

        for i in range(D):

            if (b & (1 << i)) != 0:

                sc += (i + 1) * 100 * p[i] + c[i]

                cnt += p[i]

        if sc < G:

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

                if (b & (1 << i)) == 0:

                    unit = (i + 1) * 100

                    cnt2 = min((G - sc + (unit - 1)) // unit, p[i] - 1)

                    sc += cnt2 * unit

                    cnt += cnt2

                    break

        if sc >= G:

            min_cnt = min(min_cnt, cnt)



    return min_cnt



print((solve()))

def solve():
    inf = 1 << 60
    D, G = list(map(int, input().split()))
    p = [0]
    c = [0]
    for i in range(D):
        pi, ci = list(map(int, input().split()))
        p.append(pi)
        c.append(ci)
    sump = sum(p)
    # dp[i][j] = 100i点の問題までで、j問解いて得られる最大の点数
    dp = [[-inf for j in range(sump + 1)] for i in range(D + 1)]
    dp[0][0] = 0
    for d in range(1, D + 1):
        for i in range(sump + 1):
            for j in range(p[d] + 1):
                if i - j >= 0:
                    dp[d][i] = max(dp[d][i], dp[d - 1][i])
                    if dp[d - 1][i - j] >= 0:
                        if j != p[d]:
                            dp[d][i] = max(dp[d][i], dp[d - 1][i - j] + 100 * d * j)
                        else:
                            dp[d][i] = max(
                                dp[d][i], dp[d - 1][i - j] + 100 * d * j + c[d]
                            )
        # print(dp)
    for i in range(sump + 1):
        if dp[D][i] >= G:
            return i


print((solve()))

def solve():
    inf = 1 << 60
    D, G = list(map(int, input().split()))
    p = []
    c = []
    for i in range(D):
        pi, ci = list(map(int, input().split()))
        p.append(pi)
        c.append(ci)
    bitD = 1 << D
    min_cnt = inf
    for b in range(bitD):
        sc = 0
        cnt = 0
        for i in range(D):
            if (b & (1 << i)) != 0:
                sc += (i + 1) * 100 * p[i] + c[i]
                cnt += p[i]
        if sc < G:
            for i in range(D - 1, -1, -1):
                if (b & (1 << i)) == 0:
                    unit = (i + 1) * 100
                    cnt2 = min((G - sc + (unit - 1)) // unit, p[i] - 1)
                    sc += cnt2 * unit
                    cnt += cnt2
                    break
        if sc >= G:
            min_cnt = min(min_cnt, cnt)
    return min_cnt


print((solve()))

-    p = [0] -    c = [0] +    p = [] +    c = [] -    sump = sum(p) -    # dp[i][j] = 100i点の問題までで、j問解いて得られる最大の点数 -    dp = [[-inf for j in range(sump + 1)] for i in range(D + 1)] -    dp[0][0] = 0 -    for d in range(1, D + 1): -        for i in range(sump + 1): -            for j in range(p[d] + 1): -                if i - j >= 0: -                    dp[d][i] = max(dp[d][i], dp[d - 1][i]) -                    if dp[d - 1][i - j] >= 0: -                        if j != p[d]: -                            dp[d][i] = max(dp[d][i], dp[d - 1][i - j] + 100 * d * j) -                        else: -                            dp[d][i] = max( -                                dp[d][i], dp[d - 1][i - j] + 100 * d * j + c[d] -                            ) -        # print(dp) -    for i in range(sump + 1): -        if dp[D][i] >= G: -            return i +    bitD = 1 << D +    min_cnt = inf +    for b in range(bitD): +        sc = 0 +        cnt = 0 +        for i in range(D): +            if (b & (1 << i)) != 0: +                sc += (i + 1) * 100 * p[i] + c[i] +                cnt += p[i] +        if sc < G: +            for i in range(D - 1, -1, -1): +                if (b & (1 << i)) == 0: +                    unit = (i + 1) * 100 +                    cnt2 = min((G - sc + (unit - 1)) // unit, p[i] - 1) +                    sc += cnt2 * unit +                    cnt += cnt2 +                    break +        if sc >= G: +            min_cnt = min(min_cnt, cnt) +    return min_cnt