N = int(input())
F = []
P = []

for i in range(N):
  f = list(map(int,input().split()))
  F.append(f)
  
for i in range(N):
  p = list(map(int,input().split()))
  P.append(p)
  
value = 0

ans = - (10 ** 9)

def recur(list):
  con = len(list)
  #list = [0,0, ... ~ 0] ~ [1,1, ... ~ 1]
  if con == 10:
    #1がない = 出店していない場合は何も返さない
    if list.count(1) == 0:
        return
    value = 0
    #インデックス番号とF[i] = 店の出店リストを取得
    for n,shop in enumerate(F):
        con = 0
        for j in range(10):
          	#j日に自店が出店し、かつ他店nも出店するならば、カウントする
            if list[j] == 1 and shop[j] == 1:
                con += 1
        #出店リストlistのパターンに応じた店nごとの利益を
        #同時出店日数conから算出し足し合わせる
        value += P[n][con]
 
    global ans
  　
    ans = max(ans, value)
    
  else:
    #出店しない
    recur(list + [0])
    #出店する
    recur(list + [1])
    
recur([])
    
print(ans)