#include using namespace std; #ifdef LOCAL #include #define OUT(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else #define OUT(...) (static_cast(0)) #endif int main(){ int N, M; cin >> N >> M; assert(2 <= N && N <= 2e5); assert(1 <= M && M <= 10); vector X(M); for(int i = 0; i < M; i++){ cin >> X[i]; assert(0 <= X[i] && X[i] < (1 << 16)); } vector C(N, vector(M, 0)); vector T(N); set> cst; for(int i = 0; i < N; i++){ for(int j = 0; j < M; j++){ cin >> C[i][j]; assert(0 <= C[i][j] && C[i][j] < (1 << 16)); } cst.insert(C[i]); cin >> T[i]; assert(0 < T[i] && T[i] <= 100); } assert(cst.size() == N); map, int> ctst; for(int i = 0; i < N; i++){ vector ct(M); for(int j = 0; j < M; j++){ ct[j] = C[i][j] * T[i]; } ctst[ct] += 1; } bool ans = false; for(int i = 0; i < N; i++){ if(T[i] == 100){ if(C[i] == X){ ans = true; } continue; } vector ct(M, -1); for(int j = 0; j < M; j++){ ct[j] = 10000 * X[j] - 100 * T[i] * C[i][j]; if(ct[j] % (100 - T[i]) != 0){ ct[j] = -1; } else{ ct[j] /= (100 - T[i]); } } if(ctst[ct] > (X == C[i])){ ans = true; } } if(ans){ cout << "Yes" << endl; } else{ cout << "No" << endl; } }