#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000;
bool ok[maxn + 1], onl[maxn + 1];
int me, n, m, tt = 0, ans = 0, ls = 0, v[maxn + 1];
char c;
unordered_set<int> s, z;
vector<int> aa;
int ca;
void reloc() {
  freopen("/Users/admin/Desktop/cards.in", "r", stdin);
  freopen("/Users/admin/Desktop/cards.out", "w", stdout);
  return;
}
int main() {
  memset(v, 0, sizeof(v));
  scanf("%d%d", &n, &m);
  ans = n;
  for (int i = 1; i <= n; i++) {
    ok[i] = 1;
    onl[i] = 0;
  }
  scanf("%c", &c);
  for (int i = 1; i <= m; i++) {
    scanf("%c %d\n", &c, &me);
    if (c == '-') {
      if (v[me] == 0) {
        for (int i : z) {
          if (ok[i]) ans--;
          ok[i] = 0;
        }
        z.clear();
      }
      if (1) {
        for (int i : s) {
          if (ok[i]) ans--;
          ok[i] = 0;
        }
        s.clear();
      }
      s.insert(me);
      if (onl[me]) {
        onl[me] = 0;
        tt--;
      } else {
        if (ok[ca]) ans--;
        ok[ca] = 0;
      }
      if (tt > 0) {
        for (int i : s) {
          if (ok[i]) ans--;
          ok[i] = 0;
        }
        s.clear();
      }
    } else {
      if (ls != 0 && ls != me) {
        if (ok[me]) ans--;
        ok[me] = 0;
      }
      if (ls == 0) {
        ca = me;
      }
      if (s.count(me)) s.erase(me);
      onl[me] = 1;
      tt++;
      for (int i : s) {
        if (ok[i]) ans--;
        ok[i] = 0;
      }
      s.clear();
    }
    ls = me;
    v[me] = 1;
    z.insert(me);
  }
  printf("%d\n", ans);
  if (ans == 0) return 0;
  for (int i = 1; i <= n; i++) {
    if (ok[i]) aa.push_back(i);
  }
  for (int i = 0; i < aa.size() - 1; i++) printf("%d ", aa[i]);
  printf("%d\n", aa[aa.size() - 1]);
  return 0;
}
