#include <bits/stdc++.h>
int pre[100010], ok[100010], vis[100010], x[100010], visd[100010], n, m, ans,
    now, prenow, last;
char ch[100010];
void work() {
  for (int i = 1; i <= m; i++) {
    if (ch[i] == '+') {
      vis[x[i]] = 1;
    } else if (ch[i] == '-') {
      if (!vis[x[i]])
        pre[x[i]] = 1, prenow++;
      else
        vis[x[i]] = 0;
    }
  }
  now = prenow;
  if (now) {
    ans = now;
    for (int i = 1; i <= n; i++) ok[i] = pre[i];
  } else {
    for (int i = 1; i <= n; i++)
      if (visd[i]) ok[i] = 1, ans++;
  }
  int flag = 1;
  for (int i = 1; i <= m; i++) {
    if (!flag) break;
    if (ch[i] == '+') {
      if (!now) {
        if (last && last != x[i]) flag = 0;
        last = x[i];
      } else {
        if (ok[x[i]]) ok[x[i]] = 0, ans--;
      }
      now++;
    } else if (ch[i] == '-') {
      if (--now) {
        if (ok[x[i]]) ok[x[i]] = 0, ans--;
      } else {
        if (last && last != x[i]) flag = 0;
        last = x[i];
      }
    }
  }
  if (!flag) {
    ans = 0;
    for (int i = 1; i <= n; i++)
      if (!visd[i])
        ok[i] = 1, ans++;
      else
        ok[i] = 0;
  } else {
    if (last && ok[last]) memset(ok, 0, sizeof(ok)), ans = 1, ok[last] = 1;
    for (int i = 1; i <= n; i++)
      if (!visd[i]) ok[i] = 1, ans++;
  }
}
int main() {
  scanf("%d %d\n", &n, &m);
  for (int i = 1; i <= m; i++) scanf("%c %d\n", &ch[i], &x[i]), visd[x[i]] = 1;
  work();
  printf("%d\n", ans);
  if (ans)
    for (int i = 1; i <= n; i++)
      if (ok[i]) printf("%d ", i);
  return 0;
}
