#include <bits/stdc++.h>
using namespace std;
int n, a[10] = {0};
vector<vector<int>> f, p;
long long ans;
void dfs(int i, int a[]) {
  if (i == 10) {
    int e = 0;
    long long d = 0;
    for (int(j) = 0; (j) < (n); (j)++) {
      int x = 0;
      for (int(k) = 0; (k) < (10); (k)++) {
        if (a[k] && f[j][k]) {
          x++;
          e++;
        }
      }
      d += p[j][x];
    }
    if (!e) return;
    ans = max(ans, d);
    return;
  }
  int b[10];
  for (int(j) = 0; (j) < (10); (j)++) {
    b[j] = a[j];
  }
  b[i]++;
  dfs(i + 1, a);
  dfs(i + 1, b);
}
int main() {
  cin >> n;
  for (int(i) = 0; (i) < (n); (i)++) {
    vector<int> b;
    f.push_back(b);
    for (int(j) = 0; (j) < (10); (j)++) {
      int c;
      cin >> c;
      f[i].push_back(c);
    }
  }
  for (int(i) = 0; (i) < (n); (i)++) {
    vector<int> b;
    p.push_back(b);
    for (int(j) = 0; (j) < (11); (j)++) {
      int c;
      cin >> c;
      p[i].push_back(c);
    }
  }
  dfs(0, a);
  cout << ans << endl;
  return 0;
}
