#include <bits/stdc++.h>
using namespace std;
const int N = (int)2e5 + 100;
int n, k;
char cmd[N];
int cord[N];
bool can_be[N];
bool start_used[N];
bool on[N];
int sum[N];
int last_cord[N];
bool used[N];
int l = N, r = -N;
int main() {
  for (int i = 0; i < N; i++) can_be[i] = true;
  scanf("%d%d", &n, &k);
  for (int i = 0; i < k; i++) {
    cin >> cmd[i] >> cord[i];
  }
  int cnt = 0;
  for (int i = 0; i < k; i++) {
    int p = cord[i];
    if (cmd[i] == '-' && !start_used[p]) cnt++;
    start_used[p] = true;
  }
  for (int i = 0; i < N; i++) last_cord[i] = -1;
  for (int i = 0; i < k; i++) {
    int p = cord[i];
    used[p] = true;
    if (cmd[i] == '+') {
      if (cnt != 0) can_be[p] = false;
      cnt++;
      last_cord[p] = i;
      on[p] = true;
      l = min(l, i);
      r = max(r, i);
    } else {
      if (cnt != 1) can_be[p] = false;
      cnt--;
      on[p] = false;
      sum[p] += i - last_cord[p] + 1;
      l = min(l, last_cord[p]);
      r = max(r, i);
    }
  }
  for (int i = 1; i <= n; i++) {
    if (on[i]) {
      r = k + 1;
      sum[i] += r - last_cord[i] + 1;
    }
  }
  int len = r - l + 1;
  vector<int> res;
  for (int i = 1; i <= n; i++) {
    if (used[i] && sum[i] != len) can_be[i] = false;
  }
  for (int i = 1; i <= n; i++)
    if (can_be[i]) res.push_back(i);
  printf("%d\n", (int)res.size());
  for (int i = 0; i < (int)res.size(); i++) printf("%d ", res[i]);
  return 0;
}
