import sys

import numpy as np



# N 店の数

n = int(eval(input()))



# F 店の営業計画

f = [input().replace(" ", "") for i in range(n)]



# P 営業利益

p = [list(map(int, input().split())) for i in range(n)]



p_max = -999999999999999

for i in range(1, 1024):

    f_b = format(i, '010b')

    p_10 = 0

    for f_1, p_1 in zip(f, p):

        p_cnt = 0

        for j in range(10):

            if f_1[j] == '1' and f_b[j] == '1':

                p_cnt += 1

        p_10 += p_1[p_cnt]

    if p_10 > p_max:

        if p_10 == 0:

            print((str(i)))

            break

        p_max = p_10



print(p_max)
import sys

import numpy as np



input = sys.stdin.readline



# N 店の数

n = int(eval(input()))



# F 店の営業計画

f = [input().replace(" ", "") for i in range(n)]



# P 営業利益

p = [list(map(int, input().split())) for i in range(n)]



# 全ての時間帯で店を開けるか閉めるの組合せを考える。

# 2 ** 10 の組合せで最大の利益となるものを求める

p_max = -999999999999999

# 1日は開ける必要があるので 1から

for i in range(1, 1024):

    # 2進数にして 1：店を開ける 0：店を開けない

    f_b = format(i, '010b')

    # 10個の時間帯１パターンでの最大利益

    p_10 = 0

    for f_1, p_1 in zip(f, p):

        # 店１つ分の処理

        # お姉ちゃんの店と同時に開いている回数

        p_cnt = 0

        for j in range(10):

            # 10個の時間帯ごとの処理

            if f_1[j] == '1' and f_b[j] == '1':

                # 両方の店が開いている

                p_cnt += 1

        # 両方で営業している回数での利益

        p_10 += p_1[p_cnt]

    if p_10 > p_max:

        # 利益が大きいので入れ替え

        p_max = p_10



print(p_max)
import sys
import numpy as np

# N 店の数
n = int(eval(input()))
# F 店の営業計画
f = [input().replace(" ", "") for i in range(n)]
# P 営業利益
p = [list(map(int, input().split())) for i in range(n)]
p_max = -999999999999999
for i in range(1, 1024):
    f_b = format(i, "010b")
    p_10 = 0
    for f_1, p_1 in zip(f, p):
        p_cnt = 0
        for j in range(10):
            if f_1[j] == "1" and f_b[j] == "1":
                p_cnt += 1
        p_10 += p_1[p_cnt]
    if p_10 > p_max:
        if p_10 == 0:
            print((str(i)))
            break
        p_max = p_10
print(p_max)

import sys
import numpy as np

input = sys.stdin.readline
# N 店の数
n = int(eval(input()))
# F 店の営業計画
f = [input().replace(" ", "") for i in range(n)]
# P 営業利益
p = [list(map(int, input().split())) for i in range(n)]
# 全ての時間帯で店を開けるか閉めるの組合せを考える。
# 2 ** 10 の組合せで最大の利益となるものを求める
p_max = -999999999999999
# 1日は開ける必要があるので 1から
for i in range(1, 1024):
    # 2進数にして 1：店を開ける 0：店を開けない
    f_b = format(i, "010b")
    # 10個の時間帯１パターンでの最大利益
    p_10 = 0
    for f_1, p_1 in zip(f, p):
        # 店１つ分の処理
        # お姉ちゃんの店と同時に開いている回数
        p_cnt = 0
        for j in range(10):
            # 10個の時間帯ごとの処理
            if f_1[j] == "1" and f_b[j] == "1":
                # 両方の店が開いている
                p_cnt += 1
        # 両方で営業している回数での利益
        p_10 += p_1[p_cnt]
    if p_10 > p_max:
        # 利益が大きいので入れ替え
        p_max = p_10
print(p_max)

+input = sys.stdin.readline +# 全ての時間帯で店を開けるか閉めるの組合せを考える。 +# 2 ** 10 の組合せで最大の利益となるものを求める +# 1日は開ける必要があるので 1から +    # 2進数にして 1：店を開ける 0：店を開けない +    # 10個の時間帯１パターンでの最大利益 +        # 店１つ分の処理 +        # お姉ちゃんの店と同時に開いている回数 +            # 10個の時間帯ごとの処理 +                # 両方の店が開いている +        # 両方で営業している回数での利益 -        if p_10 == 0: -            print((str(i))) -            break +        # 利益が大きいので入れ替え