#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
const int M = 1000010;
const int MOD = 1000000007;
const int INF = 0x7fffffff;
const int dir4[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
const int dir8[8][2] = {{-1, 0}, {1, 0},  {0, -1},  {0, 1},
                        {-1, 1}, {1, -1}, {-1, -1}, {1, 1}};
const double eps = 1e-16;
const double PI = acos(-1.0);
inline int sign(double x) { return (x > eps) - (x < -eps); }
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
template <class T>
inline T Min(T a, T b) {
  return a < b ? a : b;
}
template <class T>
inline T Max(T a, T b) {
  return a > b ? a : b;
}
int f[N];
vector<int> v;
set<int> S;
set<int>::iterator it;
struct Node {
  char str[5];
  int t;
} node[N];
int main() {
  int n, m;
  while (scanf("%d%d", &(n), &(m)) != EOF) {
    v.clear();
    S.clear();
    for (int i = 1; i <= n; i++) f[i] = 1;
    int ans = n;
    for (int i = 0; i < (m); i++) scanf("%s %d", node[i].str, &node[i].t);
    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);
      }
    }
    printf("%d\n", (ans));
    int flag = 0;
    for (int i = 1; i <= n; i++) {
      if (!f[i]) continue;
      if (flag) printf(" ");
      printf("%d", i);
      flag = 1;
    }
    if (ans) printf("\n");
  }
  return 0;
}
