#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
const int inf = 2000000055;
vector<pair<int, int> > g[2 * N];
int p[2 * N];
bool used[2 * N];
vector<int> gr[2 * N];
int F[2 * N], ans[2 * N];
int x, n, m, k, current;
int colour[2 * N];
bool dfs(int v) {
  if (colour[v] == current) return false;
  colour[v] = current;
  for (int i = 0; i < gr[v].size(); ++i) {
    int j = gr[v][i];
    if (F[j] == -1) {
      F[j] = v;
      return true;
    }
  }
  for (int i = 0; i < gr[v].size(); ++i) {
    int j = gr[v][i];
    if (F[j] == -1 || dfs(F[j])) {
      F[j] = v;
      return true;
    }
  }
  return false;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &k);
    for (int j = 0; j < k; ++j) {
      scanf("%d", &x);
      if (x > 0)
        g[x - 1].push_back(make_pair(i, 1));
      else
        g[-x - 1].push_back(make_pair(i, 0));
    }
  }
  memset(used, false, sizeof(used));
  for (int i = 0; i < n; ++i) ans[i] = 0;
  for (int i = 0; i < m; ++i) {
    if (g[i].size() == 2) {
      if (g[i][0].second == g[i][1].second) {
        ans[i] = g[i][0].second;
        int f = g[i][0].first, s = g[i][1].first;
        used[f] = used[s] = true;
      } else {
        int f, s;
        f = g[i][0].first, s = g[i][1].first;
        gr[f].push_back(i);
        gr[s].push_back(i);
      }
    } else {
      ans[i] = 0;
      if (g[i].size()) {
        ans[i] = g[i][0].second;
        used[g[i][0].first] = true;
      }
    }
  }
  for (int i = 0; i < m; ++i) F[i] = -1;
  for (int i = 0; i < n; ++i) p[i] = i;
  for (int i = 0; i < 10; ++i) random_shuffle(p, p + n);
  for (int j = 0; j < n; ++j) {
    int i = p[j];
    current++;
    if (used[i]) continue;
    if (!dfs(i)) {
      puts("NO");
      return 0;
    }
  }
  for (int i = 0; i < m; ++i) {
    if (F[i] != -1) {
      if (g[i].size() == 1) {
        ans[i] = g[i][0].second;
      } else {
        int cur = g[i][1].second;
        if (g[i][0].first == F[i]) cur = g[i][0].second;
        ans[i] = cur;
      }
    }
  }
  puts("YES");
  for (int i = 0; i < m; ++i) printf("%d", ans[i]);
  puts("");
  return 0;
}
