#include <bits/stdc++.h>
using namespace std;
int a[100010];
int c[100010];
int first[100010], last[100010];
int L[100010], R[100010];
int n, m;
vector<int> ans;
int go(int t) {
  int k = 0, f = 0;
  for (int i = 0; i < n; i++) {
    if (L[i]) {
      ++k;
      if (i == t) f = 1;
    }
  }
  if (k && !f) return 0;
  for (int i = 1; i <= m; i++) {
    k += c[i];
    if (a[i] == t) {
      f += c[i];
    }
    if (k && !f) return 0;
  }
  return 1;
}
void putans() {
  sort(ans.begin(), ans.end());
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); i++) {
    printf("%d ", ans[i] + 1);
  }
}
int main() {
  char str[4];
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    scanf("%s%d", str, &a[i]);
    --a[i];
    if (str[0] == '+') {
      c[i] = 1;
    } else {
      c[i] = -1;
    }
    last[a[i]] = i;
    if (!first[a[i]]) {
      first[a[i]] = i;
    }
  }
  for (int i = 0; i < n; i++) {
    if (!first[i]) {
      ans.push_back(i);
    }
    if (c[first[i]] == -1) {
      L[i] = 1;
    }
    if (c[last[i]] == 1) {
      R[i] = 1;
    }
  }
  int k = -1, l = -1;
  for (int i = 0; i < n; i++) {
    if (L[i] && k < first[i]) {
      k = first[i];
      l = i;
    }
  }
  if (l != -1) {
    if (go(l)) {
      ans.push_back(l);
    }
    putans();
    return 0;
  }
  k = m + 10, l = -1;
  for (int i = 0; i < n; i++) {
    if (R[i] && k > last[i]) {
      k = last[i];
      l = i;
    }
  }
  if (l != -1) {
    if (go(l)) {
      ans.push_back(l);
    }
    putans();
    return 0;
  }
  if (go(a[0])) {
    ans.push_back(a[0]);
  }
  putans();
  return 0;
}
