inf = float('inf')





def rec(cur, partially_solved, solve_num, score):

    if cur == d:

        return solve_num if score >= g else inf



    res = rec(cur + 1, partially_solved, solve_num, score)

    res = min(res,

              rec(cur + 1, partially_solved, solve_num + p[cur], score + p[cur] * (cur + 1) * 100 + c[cur]))

    if not partially_solved:

        for i in range(1, p[cur]):

            res = min(res,

                      rec(cur + 1, True, solve_num + i, score + i * (cur + 1) * 100))

    return res





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



p, c = [], []

for _ in range(d):

    tp, tc = list(map(int, input().split()))

    p.append(tp)

    c.append(tc)

print((rec(0, False, 0, 0)))

def main():

    from itertools import product



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



    prob = []

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

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

        prob.append((j * 100, p, c))  # score,amount,bonus



    ans = -1

    for prd in product([0, 1], repeat=D):

        cnt = 0

        g = 0

        for j, (score, amount, bonus) in zip(prd, prob):

            if j:

                cnt += amount

                g += score * amount + bonus



        if g < G:

            for j, (score, amount, bonus) in reversed(tuple(zip(prd, prob))):

                if (not j) and (score * amount >= G - g):

                    use = (G - g + score - 1) // score

                    cnt += use

                    g += score * use

                    break



        if (g < G) or (~ans and ans <= cnt): continue

        ans = cnt



    print(ans)





if __name__ == '__main__':

    main()

inf = float("inf")


def rec(cur, partially_solved, solve_num, score):
    if cur == d:
        return solve_num if score >= g else inf
    res = rec(cur + 1, partially_solved, solve_num, score)
    res = min(
        res,
        rec(
            cur + 1,
            partially_solved,
            solve_num + p[cur],
            score + p[cur] * (cur + 1) * 100 + c[cur],
        ),
    )
    if not partially_solved:
        for i in range(1, p[cur]):
            res = min(
                res, rec(cur + 1, True, solve_num + i, score + i * (cur + 1) * 100)
            )
    return res


d, g = list(map(int, input().split()))
p, c = [], []
for _ in range(d):
    tp, tc = list(map(int, input().split()))
    p.append(tp)
    c.append(tc)
print((rec(0, False, 0, 0)))

def main():
    from itertools import product

    D, G = list(map(int, input().split()))
    prob = []
    for j in range(1, D + 1):
        p, c = list(map(int, input().split()))
        prob.append((j * 100, p, c))  # score,amount,bonus
    ans = -1
    for prd in product([0, 1], repeat=D):
        cnt = 0
        g = 0
        for j, (score, amount, bonus) in zip(prd, prob):
            if j:
                cnt += amount
                g += score * amount + bonus
        if g < G:
            for j, (score, amount, bonus) in reversed(tuple(zip(prd, prob))):
                if (not j) and (score * amount >= G - g):
                    use = (G - g + score - 1) // score
                    cnt += use
                    g += score * use
                    break
        if (g < G) or (~ans and ans <= cnt):
            continue
        ans = cnt
    print(ans)


if __name__ == "__main__":
    main()

-inf = float("inf") +def main(): +    from itertools import product + +    D, G = list(map(int, input().split())) +    prob = [] +    for j in range(1, D + 1): +        p, c = list(map(int, input().split())) +        prob.append((j * 100, p, c))  # score,amount,bonus +    ans = -1 +    for prd in product([0, 1], repeat=D): +        cnt = 0 +        g = 0 +        for j, (score, amount, bonus) in zip(prd, prob): +            if j: +                cnt += amount +                g += score * amount + bonus +        if g < G: +            for j, (score, amount, bonus) in reversed(tuple(zip(prd, prob))): +                if (not j) and (score * amount >= G - g): +                    use = (G - g + score - 1) // score +                    cnt += use +                    g += score * use +                    break +        if (g < G) or (~ans and ans <= cnt): +            continue +        ans = cnt +    print(ans) -def rec(cur, partially_solved, solve_num, score): -    if cur == d: -        return solve_num if score >= g else inf -    res = rec(cur + 1, partially_solved, solve_num, score) -    res = min( -        res, -        rec( -            cur + 1, -            partially_solved, -            solve_num + p[cur], -            score + p[cur] * (cur + 1) * 100 + c[cur], -        ), -    ) -    if not partially_solved: -        for i in range(1, p[cur]): -            res = min( -                res, rec(cur + 1, True, solve_num + i, score + i * (cur + 1) * 100) -            ) -    return res - - -d, g = list(map(int, input().split())) -p, c = [], [] -for _ in range(d): -    tp, tc = list(map(int, input().split())) -    p.append(tp) -    c.append(tc) -print((rec(0, False, 0, 0))) +if __name__ == "__main__": +    main()