#!/usr/bin/env python3



import sys

import math

from bisect import bisect_right as br

from bisect import bisect_left as bl

sys.setrecursionlimit(2147483647)

from heapq import heappush, heappop,heappushpop

from collections import defaultdict

from itertools import accumulate

from collections import Counter

from collections import deque

from operator import itemgetter

from itertools import permutations

mod = 10**9 + 7

inf = float('inf')

def I(): return int(sys.stdin.readline())

def LI(): return list(map(int,sys.stdin.readline().split()))



d,g = LI()

pc = [LI() for _ in range(d)]

ans = inf

for i in permutations(list(range(d))):

    score = 0

    count = 0

    for j in list(i):

        p,c = pc[j]

        if score + p*(j+1)*100 + c < g:

            score += p*(j+1)*100 + c

            count += p

            continue

        elif score + p*(j+1)*100 >= g:

            count += (g-score-1)//((j+1)*100)+1

            break

        elif score + p*(j+1)*100 + c >= g:

            count += p

            break

    ans = min(ans,count)

print(ans)

#!/usr/bin/env python3



import sys

import math

from bisect import bisect_right as br

from bisect import bisect_left as bl

sys.setrecursionlimit(2147483647)

from heapq import heappush, heappop,heappushpop

from collections import defaultdict

from itertools import accumulate

from collections import Counter

from collections import deque

from operator import itemgetter

from itertools import permutations

mod = 10**9 + 7

inf = float('inf')

def I(): return int(sys.stdin.readline())

def LI(): return list(map(int,sys.stdin.readline().split()))



d,g = LI()

pc = [LI() for _ in range(d)]

ans = inf

for i in range(1<<d):

    tmp = -1

    count = 0

    score = 0

    flag = True

    for j in range(d):

        if i >> j & 1:

            count += pc[j][0]

            score += pc[j][1] + pc[j][0]*(j+1)*100

        else:

            tmp = max(tmp,j)

    if tmp != -1:

        if score >= g:

           pass 

        elif g - score - (pc[tmp][0]-1)*(tmp+1)*100 > 0:

            flag = False

        else:

            count += (g-score-1)//((tmp+1)*100) + 1

    else:

        if score < g:

            flag = False

    if flag:

        ans = min(ans, count)

print(ans)    
#!/usr/bin/env python3
import sys
import math
from bisect import bisect_right as br
from bisect import bisect_left as bl

sys.setrecursionlimit(2147483647)
from heapq import heappush, heappop, heappushpop
from collections import defaultdict
from itertools import accumulate
from collections import Counter
from collections import deque
from operator import itemgetter
from itertools import permutations

mod = 10**9 + 7
inf = float("inf")


def I():
    return int(sys.stdin.readline())


def LI():
    return list(map(int, sys.stdin.readline().split()))


d, g = LI()
pc = [LI() for _ in range(d)]
ans = inf
for i in permutations(list(range(d))):
    score = 0
    count = 0
    for j in list(i):
        p, c = pc[j]
        if score + p * (j + 1) * 100 + c < g:
            score += p * (j + 1) * 100 + c
            count += p
            continue
        elif score + p * (j + 1) * 100 >= g:
            count += (g - score - 1) // ((j + 1) * 100) + 1
            break
        elif score + p * (j + 1) * 100 + c >= g:
            count += p
            break
    ans = min(ans, count)
print(ans)

#!/usr/bin/env python3
import sys
import math
from bisect import bisect_right as br
from bisect import bisect_left as bl

sys.setrecursionlimit(2147483647)
from heapq import heappush, heappop, heappushpop
from collections import defaultdict
from itertools import accumulate
from collections import Counter
from collections import deque
from operator import itemgetter
from itertools import permutations

mod = 10**9 + 7
inf = float("inf")


def I():
    return int(sys.stdin.readline())


def LI():
    return list(map(int, sys.stdin.readline().split()))


d, g = LI()
pc = [LI() for _ in range(d)]
ans = inf
for i in range(1 << d):
    tmp = -1
    count = 0
    score = 0
    flag = True
    for j in range(d):
        if i >> j & 1:
            count += pc[j][0]
            score += pc[j][1] + pc[j][0] * (j + 1) * 100
        else:
            tmp = max(tmp, j)
    if tmp != -1:
        if score >= g:
            pass
        elif g - score - (pc[tmp][0] - 1) * (tmp + 1) * 100 > 0:
            flag = False
        else:
            count += (g - score - 1) // ((tmp + 1) * 100) + 1
    else:
        if score < g:
            flag = False
    if flag:
        ans = min(ans, count)
print(ans)

-for i in permutations(list(range(d))): +for i in range(1 << d): +    tmp = -1 +    count = 0 -    count = 0 -    for j in list(i): -        p, c = pc[j] -        if score + p * (j + 1) * 100 + c < g: -            score += p * (j + 1) * 100 + c -            count += p -            continue -        elif score + p * (j + 1) * 100 >= g: -            count += (g - score - 1) // ((j + 1) * 100) + 1 -            break -        elif score + p * (j + 1) * 100 + c >= g: -            count += p -            break -    ans = min(ans, count) +    flag = True +    for j in range(d): +        if i >> j & 1: +            count += pc[j][0] +            score += pc[j][1] + pc[j][0] * (j + 1) * 100 +        else: +            tmp = max(tmp, j) +    if tmp != -1: +        if score >= g: +            pass +        elif g - score - (pc[tmp][0] - 1) * (tmp + 1) * 100 > 0: +            flag = False +        else: +            count += (g - score - 1) // ((tmp + 1) * 100) + 1 +    else: +        if score < g: +            flag = False +    if flag: +        ans = min(ans, count)