package main

import "fmt"

func main() {
	var N int
	fmt.Scan(&N)
	shops := make([][10]int, N) // 商店街のお店が開いている時間帯
	for i := 0; i < N; i++ {
		for j := 0; j < len(shops[i]); j += 2 {
			fmt.Scan(&shops[i][j], &shops[i][j+1])
		}
	}
	profits := make([][11]int, N) // 自分のお店と商店街のお店iが同時に開いている時間帯の個数で得られる利益
	for i := range profits {
		for j := range profits[i] {
			fmt.Scan(&profits[i][j])
		}
	}
	// お店を開く時間を全列挙して探索する
	const inf = int(1e8) + 1
	ans := -inf
	for bits := 0; bits < (1 << uint(10)); bits++ {
		if bits != 0 { // 少なくとも1つの時間帯以上でお店を開ける
			var p int
			for i := 0; i < N; i++ { // お店iが空いている時間帯をチェックする
				var slots int
				for j := 0; j < 10; j++ {
					if (bits & (1 << uint(j))) != 0 { // 時間帯jはお店を開く
						if shops[i][j] != 0 { // 商店街のお店iの時間帯jも空いている
							slots++
						}
					}
				}
				p += profits[i][slots]
			}
			ans = max(ans, p)
		}
	}
	fmt.Println(ans)
}
func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
