from collections import deque

import itertools, math

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

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

g /= 100



#ans = sum([pc[x][0] for x in range(d)])

ans = float('inf')

for bit in range(1<<d):

  cnt = 0

  point = 0

  pat = set(range(1,d+1))

  

  for i in range(d):

    if bit & (1<<i):

      point += pc[i][0]*(i+1) + pc[i][1]//100

      cnt += pc[i][0]

      pat.discard(i+1)

  

  if point < g:

      next = max(pat)

      n = min(pc[next-1][0], math.ceil((g - point)/(next)))

      cnt += n

      point += n*(next)

    

  if point >= g:

      #print(ans,cnt)

      ans = min(ans,cnt)





print(ans)

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

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



ans = float('inf')



for bit in range(1<<d):

  sum = 0

  cnt = 0

  rem = set(range(d))

  for i in range(d):

    if bit & 1<<i:

      sum += pc[i][0]*(i+1)*100 + pc[i][1]

      cnt += pc[i][0]

      rem.discard(i)

    

  if sum < g:

    u = max(rem)

    n = min(pc[u][0],  -( -(g-sum)//((u+1)*100) ))

    cnt += n

    sum += n*(u+1)*100

    

  if sum >= g:

    ans = min(ans, cnt)

    



print(ans)
from collections import deque
import itertools, math

d, g = list(map(int, input().split()))
pc = [list(map(int, input().split())) for _ in range(d)]
g /= 100
# ans = sum([pc[x][0] for x in range(d)])
ans = float("inf")
for bit in range(1 << d):
    cnt = 0
    point = 0
    pat = set(range(1, d + 1))
    for i in range(d):
        if bit & (1 << i):
            point += pc[i][0] * (i + 1) + pc[i][1] // 100
            cnt += pc[i][0]
            pat.discard(i + 1)
    if point < g:
        next = max(pat)
        n = min(pc[next - 1][0], math.ceil((g - point) / (next)))
        cnt += n
        point += n * (next)
    if point >= g:
        # print(ans,cnt)
        ans = min(ans, cnt)
print(ans)

d, g = list(map(int, input().split()))
pc = [list(map(int, input().split())) for _ in range(d)]
ans = float("inf")
for bit in range(1 << d):
    sum = 0
    cnt = 0
    rem = set(range(d))
    for i in range(d):
        if bit & 1 << i:
            sum += pc[i][0] * (i + 1) * 100 + pc[i][1]
            cnt += pc[i][0]
            rem.discard(i)
    if sum < g:
        u = max(rem)
        n = min(pc[u][0], -(-(g - sum) // ((u + 1) * 100)))
        cnt += n
        sum += n * (u + 1) * 100
    if sum >= g:
        ans = min(ans, cnt)
print(ans)

-from collections import deque -import itertools, math - -g /= 100 -# ans = sum([pc[x][0] for x in range(d)]) +    sum = 0 -    point = 0 -    pat = set(range(1, d + 1)) +    rem = set(range(d)) -        if bit & (1 << i): -            point += pc[i][0] * (i + 1) + pc[i][1] // 100 +        if bit & 1 << i: +            sum += pc[i][0] * (i + 1) * 100 + pc[i][1] -            pat.discard(i + 1) -    if point < g: -        next = max(pat) -        n = min(pc[next - 1][0], math.ceil((g - point) / (next))) +            rem.discard(i) +    if sum < g: +        u = max(rem) +        n = min(pc[u][0], -(-(g - sum) // ((u + 1) * 100))) -        point += n * (next) -    if point >= g: -        # print(ans,cnt) +        sum += n * (u + 1) * 100 +    if sum >= g: