#include <bits/stdc++.h>
using namespace std;
vector<int> in[100005], out[100005];
bool vin[100005], vout[100005], vthanks[100005], pl[100005];
int vst[100005], vmin, vmax, now, ans, answer[100005];
struct thanks {
  char c[3];
  int number;
} p[100005];
int main() {
  int i, j, m, n, e;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= m; i++) {
    scanf("%s%d", p[i].c, &p[i].number);
    pl[p[i].number] = 1;
  }
  for (i = 1; i <= m; i++) {
    if (p[i].c[0] == '+') {
      vst[p[i].number]++;
      in[i].push_back(p[i].number);
    } else {
      vst[p[i].number]--;
      out[i].push_back(p[i].number);
      if (vst[p[i].number] < 0) {
        vst[p[i].number]++;
        in[0].push_back(p[i].number);
      }
      if (i < m && p[i + 1].number != p[i].number) vthanks[p[i].number] = 1;
    }
  }
  for (i = 1; i <= n; i++)
    if (vst[i]) out[m + 1].push_back(i);
  if (in[0].size() != 0)
    vmin = 0;
  else
    vmin = 1;
  if (out[m + 1].size() != 0)
    vmax = m + 1;
  else
    vmax = m;
  for (i = vmin; i <= vmax; i++) {
    if (in[i].size() != 0) {
      e = in[i].size();
      if (now > 0) {
        for (j = 0; j < e; j++) vthanks[in[i][j]] = 1;
      }
      now += e;
    } else {
      e = out[i].size();
      now -= e;
      if (now > 0) {
        for (j = 0; j < e; j++) vthanks[out[i][j]] = 1;
      }
    }
  }
  e = in[vmin].size();
  for (i = 0; i < e; i++) vin[in[vmin][i]] = 1;
  e = out[vmax].size();
  for (i = 0; i < e; i++) vout[out[vmax][i]] = 1;
  for (i = 1; i <= n; i++)
    if ((vin[i] && vout[i] && !vthanks[i]) || pl[i] == 0) answer[++ans] = i;
  printf("%d\n", ans);
  for (i = 1; i <= ans; i++) {
    if (i != ans)
      printf("%d ", answer[i]);
    else
      printf("%d\n", answer[i]);
  }
  return 0;
}
