#include<iostream>
#include<vector>
#include<algorithm>
#include<string>

typedef long long ll;

using namespace std;

int S[10] = {}; //Sは２進数表記を表す配列

void func( int b){//整数bの２進数表記を作りたい
  
  int cnt = 0;
  
  while( b > 0 ){
   int S[cnt] = {b % 2};
    b /= 2;
    cnt++;}
     return;} 

int main()
{ int N ; cin >> N;
 int F[N][10]; int P[N][11]; 
 
for(int i = 0; i < N; i++){
  for(int j = 0; j < 10; j++){
    cin >> F[i][j];}}
 
 for(int i = 0; i < N; i++){
   for(int j = 0; j < 11; j++){
     cin >> P[i][j];}}
 //問題文の値を入力
 
 
 int max_total = 0;  
 for(int b = 1; b <= 1023 ; b++){// 1023通りを全探索
   // bを２進数表記(１０桁)し、i桁目が1からjoisinoが時間帯iに営業していることとする
   
   func(b);
   
   int total = 0; 
  for(int i = 0; i < N; i++){
    for(int j = 0; j < 10; j++){ 
      
      int cnt2 = 0;          //共に営業しているならば、totalに足す
      if( S[j] == 1 && F[i][j] == 1 ){ cnt2++;}
    
        total += P[i][cnt2];
                 }}
   
   max_total = max(max_total,total);}
 
 cout << max_total << endl; //totalの最大値を出力
 return 0;
}
 
 