#include <bits/stdc++.h>
using namespace std;
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
int N, M, l, r;
vector<int> a, b, c, d;
vector<vector<int> > F;
vector<vector<int> > R;
void input() {
  cin >> N;
  F.resize(N + 1);
  R.resize(N + 1);
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 10; j++) {
      int t;
      cin >> t;
      F[i].push_back(t);
    }
  }
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 11; j++) {
      int t;
      cin >> t;
      R[i].push_back(t);
    }
  }
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  input();
  vector<int> v;
  int ans = -1 << 25;
  for (int i = 1; i < 1 << 10; i++) {
    int tmp = 0;
    vector<int> open(10, 0);
    for (int j = 0; j < 10; j++) {
      open[j] = (i >> j) & 1;
    }
    for (int j = 0; j < N; j++) {
      int cnt = 0;
      for (int k = 0; k < 10; k++) {
        if (F[j][k] == 1 && open[k] == 1) {
          cnt++;
        };
      }
      tmp += R[j][cnt];
    }
    ans = max(ans, tmp);
  }
  cout << (ans) << endl;
  return 0;
}
