#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
const long long INF = 1LL << 60;
int main() {
  int N;
  cin >> N;
  vector<vector<int>> F(N, vector<int>(10)), P(N, vector<int>(10));
  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];
    }
  }
  for (int i = (0); i < (N); i++) {
    for (int j = (0); j < (11); j++) {
      cout << P[i][j] << " ";
    }
    cout << endl;
  }
  int ans = -1000000000;
  for (int i = 1; i < (1 << 10); i++) {
    vector<int> check(N, 0);
    for (int cnt = 0; cnt < 10; cnt++) {
      if (i & (1 << cnt)) {
        for (int j = (0); j < (N); j++) {
          if (F[j][cnt]) {
            check[j]++;
          }
        }
      }
    }
    int value = 0;
    int cnt = 0;
    for (int j = (0); j < (N); j++) {
      if (check[j] == 0) cnt++;
      value += P[j][check[j]];
    }
    if (cnt < N) ans = max(ans, value);
  }
  cout << ans << endl;
  return 0;
}
