#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
vector<int> ans, cd;
int x[N], st[N], nl[N], used[N];
char ch[N];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  int fg = 0;
  memset(st, -1, sizeof(st));
  memset(nl, 0, sizeof(nl));
  for (int i = 1; i < m + 1; i++) scanf(" %c%d", ch + i, x + i);
  for (int i = 1; i < m + 1; i++)
    if (st[x[i]] == -1) st[x[i]] = ch[i] == '+' ? 0 : 1;
  int cnt = 0;
  for (int i = 1; i < n + 1; i++)
    if (st[i] != -1) cnt += st[i];
  int cnt0 = cnt;
  cd.clear();
  for (int i = 1; i < m + 1; i++) {
    used[x[i]] = 1;
    cnt += ch[i] == '+' ? 1 : -1;
    if (ch[i] == '+' && cnt > 1) nl[x[i]] = 1;
    if (ch[i] == '-' && cnt) nl[x[i]] = 1;
    if (ch[i] == '+' && cnt == 1) cd.push_back(x[i]);
  }
  ans.clear();
  sort(cd.begin(), cd.end());
  int num = unique(cd.begin(), cd.end()) - cd.begin();
  if ((int)cd.size()) {
    for (int i = 1; i < n + 1; i++)
      if (!used[i]) ans.push_back(i);
    if (num == 1 && !nl[cd[0]] && (!cnt0 || st[cd[0]] == 1))
      ans.push_back(cd[0]);
  } else {
    for (int i = 1; i < n + 1; i++)
      if (!nl[i]) ans.push_back(i);
  }
  sort(ans.begin(), ans.end());
  printf("%d\n", (int)ans.size());
  if ((int)ans.size()) {
    for (int i = 0; i < (int)ans.size() - 1; i++) printf("%d ", ans[i]);
    printf("%d\n", ans[(int)ans.size() - 1]);
  }
  return 0;
}
