#include <bits/stdc++.h>
const int N_MAX = 101;
const int INF = 99999999;
int n, p[N_MAX][11];
bool f[N_MAX][10];
bool jt[10];
int max = -INF, c = 0;
int dfs() {
  for (int i = (0); i < (2); i++) {
    if (i == 0)
      jt[c] = true;
    else
      jt[c] = false;
    if (c < 9)
      c++, dfs();
    else {
      int bnf = 0;
      for (int j = (0); j < (n); j++) {
        int sc = 0;
        for (int k = (0); k < (10); k++)
          if (jt[k] && f[j][k]) sc++;
        bnf += p[j][sc];
      }
      bool jd = false;
      for (int j = (0); j < (9); j++)
        if (jt[j]) jd = true;
      if (jd && max < bnf) max = bnf;
    }
  }
  c--;
  return 0;
}
int main() {
  scanf("%d", &n);
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (10); j++) {
      int a;
      scanf("%d", &a);
      if (a == 1) f[i][j] = true;
    }
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (11); j++) scanf("%d", &p[i][j]);
  dfs();
  printf("%d\n", max);
}
