#!/usr/bin/env python

# coding: utf-8



# In[37]:





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

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

"""

2 700

3 500

5 800



2 2000

3 500

5 800

"""





# In[ ]:





"""

完全に解くか、全くとかないかを総当たり

完全に解く問題の総score



総scoreが目標scoreを上回っている

 -> 手数を保存

scoreを下回っている

 -> 全く解いていない問題の中から 一つ選び、中途半端に解く

    scoreを上回る場合

     -> 手数に数える

    scoreを下回る場合

     -> continue

"""





# In[35]:





import math





# In[68]:





temp_str = ''

min_nb = float('inf')

# 完全、完全じゃない、全探索

for i in range(2**d):

    #print(i)

    score = 0

    solved_nb = 0

    # j桁目が1の時、j番目のpをscoreに加算

    for j in range(d):

        if (i>>j) & 1:

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

            temp_str += '{}ten {}mon {}perf : total {}\n'.format((j+1)*100, pcs[j][0], pcs[j][1], score)

            solved_nb += pcs[j][0]

    

    # この時点で目標scoreを超えていれば、solved_nbを保存してcontinue

    if score >= g:

        min_nb = min(min_nb, solved_nb)

        #print(temp_str)

        continue

    

    # j桁目が0の中から一つ選び、

    

    #temp_score = score

    #temp_solved_nb = solved_nb

    #print(i)

    for j in range(d):

        

        if bin(i>>j)[-1] == '0':

            #print('a', j, score)

            j_nb = math.ceil((g-score)/((j+1)*100))

            score_judge = score + pcs[j][1]*j_nb 

            #print('b', j_nb, pcs[j][0])

            if j_nb <= pcs[j][0]-1 and score_judge > score:

                min_nb = min(min_nb, solved_nb+j_nb)

                temp_str += '{}ten {}mon: total {}\n'.format((j+1)*100, j_nb, (j+1)*100*j_nb)

                #print(temp_str)

    #print(temp_str)

print(min_nb)





# In[ ]:









#!/usr/bin/env python

# coding: utf-8



# In[37]:





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

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

"""

2 700

3 500

5 800



2 2000

3 500

5 800

"""





# In[ ]:





"""

完全に解くか、全くとかないかを総当たり

完全に解く問題の総score



総scoreが目標scoreを上回っている

 -> 手数を保存

scoreを下回っている

 -> 全く解いていない問題の中から 一つ選び、中途半端に解く

    scoreを上回る場合

     -> 手数に数える

    scoreを下回る場合

     -> continue

"""





# In[35]:





import math





# In[68]:





temp_str = ''

min_nb = float('inf')

# 完全、完全じゃない、全探索

for i in range(2**d):

    #print(i)

    score = 0

    solved_nb = 0

    # j桁目が1の時、j番目のpをscoreに加算

    for j in range(d):

        if (i>>j) & 1:

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

            #temp_str += '{}ten {}mon {}perf : total {}\n'.format((j+1)*100, pcs[j][0], pcs[j][1], score)

            solved_nb += pcs[j][0]

    

    # この時点で目標scoreを超えていれば、solved_nbを保存してcontinue

    if score >= g:

        min_nb = min(min_nb, solved_nb)

        #print(temp_str)

        continue

    

    # j桁目が0の中から一つ選び、

    

    #temp_score = score

    #temp_solved_nb = solved_nb

    #print(i)

    for j in range(d):

        

        if bin(i>>j)[-1] == '0':

            #print('a', j, score)

            j_nb = math.ceil((g-score)/((j+1)*100))

            #score_judge = score + pcs[j][1]*j_nb 

            #print('b', j_nb, pcs[j][0])

            if j_nb <= pcs[j][0]-1:

                min_nb = min(min_nb, solved_nb+j_nb)

                #temp_str += '{}ten {}mon: total {}\n'.format((j+1)*100, j_nb, (j+1)*100*j_nb)

                #print(temp_str)

    #print(temp_str)

print(min_nb)





# In[ ]:









#!/usr/bin/env python
# coding: utf-8
# In[37]:
d, g = list(map(int, input().split()))
pcs = [list(map(int, input().split())) for _ in range(d)]
"""
2 700
3 500
5 800
2 2000
3 500
5 800
"""
# In[ ]:
"""
完全に解くか、全くとかないかを総当たり
完全に解く問題の総score
総scoreが目標scoreを上回っている
 -> 手数を保存
scoreを下回っている
 -> 全く解いていない問題の中から 一つ選び、中途半端に解く
    scoreを上回る場合
     -> 手数に数える
    scoreを下回る場合
     -> continue
"""
# In[35]:
import math

# In[68]:
temp_str = ""
min_nb = float("inf")
# 完全、完全じゃない、全探索
for i in range(2**d):
    # print(i)
    score = 0
    solved_nb = 0
    # j桁目が1の時、j番目のpをscoreに加算
    for j in range(d):
        if (i >> j) & 1:
            score += (j + 1) * 100 * pcs[j][0] + pcs[j][1]
            temp_str += "{}ten {}mon {}perf : total {}\n".format(
                (j + 1) * 100, pcs[j][0], pcs[j][1], score
            )
            solved_nb += pcs[j][0]
    # この時点で目標scoreを超えていれば、solved_nbを保存してcontinue
    if score >= g:
        min_nb = min(min_nb, solved_nb)
        # print(temp_str)
        continue
    # j桁目が0の中から一つ選び、
    # temp_score = score
    # temp_solved_nb = solved_nb
    # print(i)
    for j in range(d):
        if bin(i >> j)[-1] == "0":
            # print('a', j, score)
            j_nb = math.ceil((g - score) / ((j + 1) * 100))
            score_judge = score + pcs[j][1] * j_nb
            # print('b', j_nb, pcs[j][0])
            if j_nb <= pcs[j][0] - 1 and score_judge > score:
                min_nb = min(min_nb, solved_nb + j_nb)
                temp_str += "{}ten {}mon: total {}\n".format(
                    (j + 1) * 100, j_nb, (j + 1) * 100 * j_nb
                )
                # print(temp_str)
    # print(temp_str)
print(min_nb)
# In[ ]:

#!/usr/bin/env python
# coding: utf-8
# In[37]:
d, g = list(map(int, input().split()))
pcs = [list(map(int, input().split())) for _ in range(d)]
"""
2 700
3 500
5 800
2 2000
3 500
5 800
"""
# In[ ]:
"""
完全に解くか、全くとかないかを総当たり
完全に解く問題の総score
総scoreが目標scoreを上回っている
 -> 手数を保存
scoreを下回っている
 -> 全く解いていない問題の中から 一つ選び、中途半端に解く
    scoreを上回る場合
     -> 手数に数える
    scoreを下回る場合
     -> continue
"""
# In[35]:
import math

# In[68]:
temp_str = ""
min_nb = float("inf")
# 完全、完全じゃない、全探索
for i in range(2**d):
    # print(i)
    score = 0
    solved_nb = 0
    # j桁目が1の時、j番目のpをscoreに加算
    for j in range(d):
        if (i >> j) & 1:
            score += (j + 1) * 100 * pcs[j][0] + pcs[j][1]
            # temp_str += '{}ten {}mon {}perf : total {}\n'.format((j+1)*100, pcs[j][0], pcs[j][1], score)
            solved_nb += pcs[j][0]
    # この時点で目標scoreを超えていれば、solved_nbを保存してcontinue
    if score >= g:
        min_nb = min(min_nb, solved_nb)
        # print(temp_str)
        continue
    # j桁目が0の中から一つ選び、
    # temp_score = score
    # temp_solved_nb = solved_nb
    # print(i)
    for j in range(d):
        if bin(i >> j)[-1] == "0":
            # print('a', j, score)
            j_nb = math.ceil((g - score) / ((j + 1) * 100))
            # score_judge = score + pcs[j][1]*j_nb
            # print('b', j_nb, pcs[j][0])
            if j_nb <= pcs[j][0] - 1:
                min_nb = min(min_nb, solved_nb + j_nb)
                # temp_str += '{}ten {}mon: total {}\n'.format((j+1)*100, j_nb, (j+1)*100*j_nb)
                # print(temp_str)
    # print(temp_str)
print(min_nb)
# In[ ]:

-            temp_str += "{}ten {}mon {}perf : total {}\n".format( -                (j + 1) * 100, pcs[j][0], pcs[j][1], score -            ) +            # temp_str += '{}ten {}mon {}perf : total {}\n'.format((j+1)*100, pcs[j][0], pcs[j][1], score) -            score_judge = score + pcs[j][1] * j_nb +            # score_judge = score + pcs[j][1]*j_nb -            if j_nb <= pcs[j][0] - 1 and score_judge > score: +            if j_nb <= pcs[j][0] - 1: -                temp_str += "{}ten {}mon: total {}\n".format( -                    (j + 1) * 100, j_nb, (j + 1) * 100 * j_nb -                ) +                # temp_str += '{}ten {}mon: total {}\n'.format((j+1)*100, j_nb, (j+1)*100*j_nb)