#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

const int mod = 10007;
const int maxN = 15;
const int maxM = 50;
const int maxDvaNaN = 40000;

int n, m, dvaNaN;
int k[maxM];
int moguceSlovo[maxM][maxN];
int potrebno[maxN];
int koliko[2][maxDvaNaN];

int main() {
    freopen("igrica.in", "r", stdin);
    scanf("%d%d", &n, &m);   
    for (int i = 0; i < m; i++) {
        k[i] = 0;
        for (int j = 0; j < n; j++) {
            int pom;
            scanf("%d", &pom);
            if (pom == 1) {
               moguceSlovo[i][k[i]] = j;
               k[i]++;       
            }
        }
    }
    for (int i = 0; i < n; i++) 
        scanf("%d", &(potrebno[i]));
    
    dvaNaN = 1 << n;
    memset(koliko, 0, sizeof(koliko));
    koliko[0][0] = 1;
    int trenutni = 0, prethodni = 1;
    for (int i = 0; i < m; i++) {
        trenutni = 1 - trenutni;
        prethodni = 1 - prethodni;
        for (int j = 0; j< dvaNaN; j++) 
            koliko[trenutni][j] = 0;
        for (int j = 0; j < k[i]; j++)
            for (int staraMaska = 0; staraMaska < dvaNaN; staraMaska++) {
                int novaMaska = 1 << moguceSlovo[i][j];
                if ((novaMaska & staraMaska) == 0)
                   novaMaska = staraMaska | novaMaska;
                else novaMaska = staraMaska & (~novaMaska);
                koliko[trenutni][novaMaska] += koliko[prethodni][staraMaska];
                if (koliko[trenutni][novaMaska] >= mod) 
                   koliko[trenutni][novaMaska] -= mod;
            }
    }
    
    int res = 0;
    for (int tek = 0; tek < dvaNaN; tek++) {
        bool zadovoljava = true;
        for (int i = 0; i < n; i++) {
            if ((potrebno[i] == 0) && ((tek & (1 << i)) != 0)) 
               zadovoljava = false;
            if ((potrebno[i] == 1) && ((tek & (1 << i)) == 0)) 
               zadovoljava = false;
        }
        if (zadovoljava) {
           res += koliko[trenutni][tek];
           if (res >= mod) res -= mod;
        }
    }    
    
    freopen("igrica.out", "w", stdout);
    printf("%d\n", res);
    return 0;
}
