#include <iostream>
#include <fstream>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <vector>
#include <list>
#include <stack>
#include <string>
#include <iomanip>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <tuple>
using namespace std;
typedef long long ll;



int main(){
	
	int n; cin >> n;
	
	int f[n][10] = {};
	for(int i=0; i<n; i++){
		for(int j=0; j<10; j++){
			cin >> f[i][j];
		}
	}
	
	int p[n][10];
	for(int i=0; i<n; i++){
		for(int j=0; j<11; j++){
			cin >> p[i][j];
		}
	}
	
	int fbit[n]={};
	for(int i=0; i<n; i++){
		int mal = 1;
		for(int j=0; j<10; j++){
			fbit[i] += mal*f[i][j];
			mal *= 2;
		}
	}
	
	//cout << fbit[0] << " " << fbit[1] << endl;
	
	
	for(int i=0; i<n; i++){
		for(int j=0; j<10; j++){
			cout << f[i][j] << " ";
		}
		cout << endl;
	}
	
	for(int i=0; i<n; i++){
		for(int j=0; j<11; j++){
			cout << p[i][j] << " ";
		}
		cout << endl;
	}
	
	
	//cout << "input completed" << endl;
	
	ll ans = -1e18;
	for(int bit=1; bit < (1<<10); bit++){
		//cout << bit << endl;
		ll tempans = 0;
		for(int i=0; i<n; i++){
			int c = 0;
			int bothbit = (bit & fbit[i]);
			while(bothbit > 0){
				if(bothbit % 2 == 1) c++;
				bothbit /= 2;
			}
			tempans += p[i][c];
		}
		ans = max(ans, tempans);
	}
	
	cout << ans;
	
	return 0;
}