#include <bits/stdc++.h>
using namespace std;
using P = pair<int, int>;
int main() {
  int n;
  cin >> n;
  vector<vector<long long>> f(n + 1, vector<long long>(11));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 10; j++) cin >> f.at(i).at(j);
  }
  vector<vector<long long>> p(n + 1, vector<long long>(11));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 11; j++) cin >> p.at(i).at(j);
  }
  long long ans = -10000000;
  for (int i = 0; i < (1 << 10); i++) {
    long long tmp = 0;
    vector<int> cnt(n, 0);
    for (int j = 0; j < 10; j++) {
      if (i & 1 << j) {
        for (int k = 0; k < n; k++) {
          if (f.at(k).at(j)) cnt.at(k)++;
        }
      }
    }
    bool no = false;
    for (int l = 0; l < n; l++) {
      if (cnt.at(l) != 0) break;
      if (l == n - 1) {
        no = true;
      }
    }
    if (no) continue;
    for (int l = 0; l < n; l++) {
      if (cnt.at(l) != 0)
        tmp += p.at(l).at(cnt.at(l));
      else
        tmp += p.at(l).at(0);
    }
    ans = max(ans, tmp);
  }
  cout << ans << endl;
  return 0;
}
