#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct B//收入
{
    long ge[11];
};
struct A//时间
{
    long pe[10];
};

int A(const void *a,const void *b)
{
    return *(int*)b-*(int*)a;
}
int main()
{
    long p[1024][10];
    long fit[1024],C[100],re,t,n;
    
    struct A s[100];
    struct B ac[100];
    long i,j,h,z;
    z=0;
    for(n=1;n<1024;n++)
    {
        h=n;
        for(i=0;i<10;i++)
        {
            t=(9-i)*(9-i);
            z=h/t;
            if(z==1)
                p[n-1][i]=1;
            else(p[n-1][i]=0);
            h%=t;
        }
    }
    scanf("%ld",&h);
    for(i=0;i<h;i++)
    {
        for(j=0;j<10;j++)
        {
            scanf("%ld",&s[i].pe[j]);
        }
    }
    for(i=0;i<h;i++)
    {
        for(j=0;j<11;j++)
        {
            scanf("%ld",&ac[i].ge[j]);
        }
    }
    for(n=1;n<1024;n++)
    {
        for(i=0;i<h;i++)
        {
            C[i]=0;
        }
        for(i=0;i<10;i++)
        {
            for(j=0;j<h;j++)
            {
                if(p[n-1][i]==1&&s[j].pe[i]==1)
                    C[j]++;
            }
        }
        re=0;
        for(i=0;i<h;i++)
        {
            re+=ac[i].ge[C[i]];
        }
        fit[n-1]=re;
    }
    qsort(fit,1023,sizeof(fit[0]),A);
    printf("%ld",fit[0]);
    
}