#include <bits/stdc++.h>
using namespace std;
int n, m, f[205522];
vector<int> v;
set<int> S;
set<int>::iterator it;
struct Node {
  char str[5];
  int t;
} node[205522];
void init() {
  v.clear();
  S.clear();
  for (int i = 1; i <= n; i++) f[i] = 1;
  for (int i = 0; i < m; i++) scanf("%s %d", node[i].str, &node[i].t);
}
void solve() {
  int ans = n;
  for (int i = 0; i < m; i++) {
    if (node[i].str[0] == '+') {
      if (S.empty() && i - 1 >= 0 && node[i - 1].str[0] == '-' &&
          node[i - 1].t == node[i].t) {
        S.insert(node[i].t);
        v.push_back(node[i].t);
        continue;
      }
      if (v.size() != 0 || i > 0) {
        if (f[node[i].t] == 1) ans--;
        f[node[i].t] = 0;
      }
      S.insert(node[i].t);
      v.push_back(node[i].t);
    } else {
      it = S.find(node[i].t);
      if (it == S.end()) {
        for (int j = 0; j < (int)v.size(); j++) {
          if (f[v[j]] == 1) {
            ans--;
            f[v[j]] = 0;
          }
        }
        S.insert(node[i].t);
      }
      if (S.size() != 1) {
        if (f[node[i].t] == 1) {
          ans--;
          f[node[i].t] = 0;
        }
      } else {
        if (i + 1 < m &&
            (node[i + 1].str[0] != '+' || node[i + 1].t != node[i].t)) {
          if (f[node[i].t] == 1) {
            ans--;
            f[node[i].t] = 0;
          }
        }
      }
      S.erase(node[i].t);
    }
  }
  cout << ans << endl;
  int flag = 0;
  for (int i = 1; i <= n; i++) {
    if (!f[i]) continue;
    if (flag) printf(" ");
    printf("%d", i);
    flag = 1;
  }
}
int main() {
  while (scanf("%d%d", &n, &m) != EOF) {
    init();
    solve();
  }
  return 0;
}
