#include typedef struct tree { int v; int n; struct tree *p; } tree; typedef struct list { int v; struct list *n; } list; tree *get_root (tree *t) { if (t == NULL || t->p == NULL) { return t; } t->p = get_root(t->p); return t->p; } int func (int v, list **e, int tmp_p, int *p, int *cnt, tree *t, int hd) { list *l = e[v]; if (p[v] > 0 && tmp_p != (p[v]-1)%2+1) { return 0; } if (p[v] > 0) { return 1; } p[v] = hd*2+tmp_p; cnt[tmp_p-1] += t[v].n; while (l != NULL) { if (func(l->v, e, 3-tmp_p, p, cnt, t, hd) <= 0) { return 0; } l = l->n; } return 1; } int main () { int n = 0; int m = 0; int i[100000] = {}; char e[100000][6] = {}; int j[100000] = {}; int res = 0; int is_ok = 1; int ans[100000] = {}; int anscnt = 0; tree t[100000] = {}; list *el[100000] = {}; list pool[200000] = {}; int used = 0; int p[100000] = {}; int flag[200000] = {}; res = scanf("%d", &n); res = scanf("%d", &m); for (int k = 0; k < m; k++) { res = scanf("%d", i+k); res = scanf("%s", e[k]); res = scanf("%d", j+k); i[k]--; j[k]--; } for (int k = 0; k < n; k++) { t[k].v = k; t[k].n = 1; t[k].p = NULL; } for (int k = 0; k < m; k++) { if (e[k][2] != '/') { tree *rt1 = get_root(t+i[k]); tree *rt2 = get_root(t+j[k]); if (rt1 != rt2) { rt1->n += rt2->n; rt2->p = rt1; } } } for (int k = 0; k < m; k++) { if (e[k][2] == '/') { tree *rt1 = get_root(t+i[k]); tree *rt2 = get_root(t+j[k]); if (rt1 == rt2) { is_ok = 0; } else { pool[used].v = rt2->v; pool[used].n = el[rt1->v]; el[rt1->v] = pool+used; used++; pool[used].v = rt1->v; pool[used].n = el[rt2->v]; el[rt2->v] = pool+used; used++; } } } for (int k = 0; k < n; k++) { if (is_ok > 0 && t[k].p == NULL && p[k] <= 0) { int cnt[2] = {}; is_ok &= func(k, el, 1, p, cnt, t, k); if (cnt[0] < cnt[1]) { flag[2*k+1] = 1; } else { flag[2*k] = 1; } } } if (is_ok <= 0) { printf("No\n"); return 0; } for (int k = 0; k < n; k++) { tree *rt = get_root(t+k); if (flag[p[rt->v]-1] > 0) { ans[anscnt] = k+1; anscnt++; } } printf("Yes\n"); printf("%d\n", anscnt); printf("%d", ans[0]); for (int k = 1; k < anscnt; k++) { printf(" %d", ans[k]); } printf("\n"); return 0; }