import sys

input=sys.stdin.readline

INF = 10**9



def main():

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

    P=[list(map(int,input().split())) for _ in range(d)]

    

    ans=INF

    for bit in range(1<<d):

        score=0

        p=0

        cnt=0

        for i in range(d):

            if (bit>>i)&1:

                score += P[i][0]*100*(i+1)+P[i][1]

                cnt += P[i][0]

            else:

                p = i

       

        if score >= g:

            ans=min(ans,cnt)

        

        else:

            for i in range(P[p][0]-1):

                score += 100*(p+1)

                cnt +=1

                if score >= g:

                    ans=min(ans,cnt)

                    break

    print(ans)

  

if __name__=='__main__':

    main()

INF = 10 ** 9

import sys

sys.setrecursionlimit(100000000)

dy = (-1,0,1,0)

dx = (0,1,0,-1)

from  heapq import heappop,heapify,heappush

from bisect import bisect_left



def main():

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

    problems = [list(map(int,input().split())) for _ in range(d)]

    

    ans = INF

    for bit in range(1 << d):

        ret = 0

        tot = 0

        left = -1

        for i in range(d):

            if (bit>>i)&1:

                tot += (i + 1) * 100 * problems[i][0] + problems[i][1]

                ret += problems[i][0]

            else:

                left = i

        

        if tot >= g:

            ans = min(ans,ret)

            continue

        

        if tot + (left + 1) * 100 * (problems[left][0] - 1) >= g:

            tmp = (left + 1) * 100

            ret += (g - tot + tmp - 1)//tmp

            ans = min(ans,ret)



    print(ans)



if __name__ == '__main__':

    main()

import sys

input = sys.stdin.readline
INF = 10**9


def main():
    d, g = list(map(int, input().split()))
    P = [list(map(int, input().split())) for _ in range(d)]
    ans = INF
    for bit in range(1 << d):
        score = 0
        p = 0
        cnt = 0
        for i in range(d):
            if (bit >> i) & 1:
                score += P[i][0] * 100 * (i + 1) + P[i][1]
                cnt += P[i][0]
            else:
                p = i
        if score >= g:
            ans = min(ans, cnt)
        else:
            for i in range(P[p][0] - 1):
                score += 100 * (p + 1)
                cnt += 1
                if score >= g:
                    ans = min(ans, cnt)
                    break
    print(ans)


if __name__ == "__main__":
    main()

INF = 10**9
import sys

sys.setrecursionlimit(100000000)
dy = (-1, 0, 1, 0)
dx = (0, 1, 0, -1)
from heapq import heappop, heapify, heappush
from bisect import bisect_left


def main():
    d, g = list(map(int, input().split()))
    problems = [list(map(int, input().split())) for _ in range(d)]
    ans = INF
    for bit in range(1 << d):
        ret = 0
        tot = 0
        left = -1
        for i in range(d):
            if (bit >> i) & 1:
                tot += (i + 1) * 100 * problems[i][0] + problems[i][1]
                ret += problems[i][0]
            else:
                left = i
        if tot >= g:
            ans = min(ans, ret)
            continue
        if tot + (left + 1) * 100 * (problems[left][0] - 1) >= g:
            tmp = (left + 1) * 100
            ret += (g - tot + tmp - 1) // tmp
            ans = min(ans, ret)
    print(ans)


if __name__ == "__main__":
    main()

+INF = 10**9 -input = sys.stdin.readline -INF = 10**9 +sys.setrecursionlimit(100000000) +dy = (-1, 0, 1, 0) +dx = (0, 1, 0, -1) +from heapq import heappop, heapify, heappush +from bisect import bisect_left -    P = [list(map(int, input().split())) for _ in range(d)] +    problems = [list(map(int, input().split())) for _ in range(d)] -        score = 0 -        p = 0 -        cnt = 0 +        ret = 0 +        tot = 0 +        left = -1 -                score += P[i][0] * 100 * (i + 1) + P[i][1] -                cnt += P[i][0] +                tot += (i + 1) * 100 * problems[i][0] + problems[i][1] +                ret += problems[i][0] -                p = i -        if score >= g: -            ans = min(ans, cnt) -        else: -            for i in range(P[p][0] - 1): -                score += 100 * (p + 1) -                cnt += 1 -                if score >= g: -                    ans = min(ans, cnt) -                    break +                left = i +        if tot >= g: +            ans = min(ans, ret) +            continue +        if tot + (left + 1) * 100 * (problems[left][0] - 1) >= g: +            tmp = (left + 1) * 100 +            ret += (g - tot + tmp - 1) // tmp +            ans = min(ans, ret)