#include <bits/stdc++.h>
int main(void) {
  int n;
  scanf("%d", &n);
  int f[n][5][2];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 5; j++) {
      for (int k = 0; k < 2; k++) {
        scanf("%d", &f[i][j][k]);
      }
    }
  }
  int c[n][10];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 10; j++) {
      scanf("%d", &c[i][j]);
    }
  }
  int kari[10], max = 0, rieki = 0;
  for (int i = 0; i < 2; i++) {
    kari[0] = i;
    for (int j = 0; j < 2; j++) {
      kari[1] = j;
      for (int k = 0; k < 2; k++) {
        kari[2] = k;
        for (int l = 0; l < 2; l++) {
          kari[3] = l;
          for (int m = 0; m < 2; m++) {
            kari[4] = m;
            for (int p = 0; p < 2; p++) {
              kari[5] = p;
              for (int q = 0; q < 2; q++) {
                kari[6] = q;
                for (int r = 0; r < 2; r++) {
                  kari[7] = r;
                  for (int s = 0; s < 2; s++) {
                    kari[8] = s;
                    for (int t = 0; t < 2; t++) {
                      kari[9] = t;
                      int jikan[n], x = 0;
                      for (int u = 0; u < n; u++) {
                        for (int v = 0; v < 5; v++) {
                          for (int w = 0; w < 2; w++) {
                            if (f[u][v][w] == 1 && kari[x++]) {
                              jikan[u]++;
                            }
                          }
                        }
                        x = 0;
                      }
                      for (int y = 0; y < n; y++) {
                        rieki += c[y][jikan[y]];
                      }
                      if (max < rieki) {
                        max = rieki;
                      }
                      rieki = 0;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  printf("%d", max);
  return 0;
}
