#include <bits/stdc++.h>
using namespace std;
bool vis[100080];
int val[100080];
int jin[100080];
struct Item {
  char ope[2];
  int x;
} item[100080];
vector<int> ans;
int main() {
  int n, m;
  while (scanf("%d%d", &n, &m) == 2) {
    ans.clear();
    memset(vis, 0, sizeof(vis));
    memset(val, 0, sizeof(val));
    int weijinxianchu = 0;
    jin[0] = 0;
    for (int i = 1; i <= m; i++) {
      scanf("%s%d", item[i].ope, &item[i].x);
      if (!val[item[i].x] && item[i].ope[0] == '-') {
        weijinxianchu = weijinxianchu > i ? weijinxianchu : i;
        ;
      }
      if (item[i].ope[0] == '+')
        jin[i] = jin[i - 1] + 1;
      else if (val[item[i].x])
        jin[i] = jin[i - 1] - 1;
      else
        jin[i] = jin[i - 1];
      if (!val[item[i].x]) val[item[i].x] = i;
    }
    for (int i = 1; i <= m; i++) {
      if (item[i].ope[0] == '+') {
        if (weijinxianchu > i) vis[item[i].x] = 1;
        if (i != 1 &&
            !(item[i - 1].ope[0] == '-' && item[i - 1].x == item[i].x))
          vis[item[i].x] = 1;
        if (jin[i - 1] > 0) vis[item[i].x] = 1;
      } else {
        if (weijinxianchu > i) vis[item[i].x] = 1;
        if ((val[item[i].x] == i && jin[i - 1] >= 1) || jin[i - 1] > 1)
          vis[item[i].x] = 1;
        if (i != m &&
            !(item[i + 1].ope[0] == '+' && item[i + 1].x == item[i].x))
          vis[item[i].x] = 1;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) ans.push_back(i);
    }
    printf("%d\n", ans.size());
    int len = ans.size();
    for (int i = 0; i < len; i++) {
      printf("%d", ans[i]);
      if (i == len - 1)
        printf("\n");
      else
        printf(" ");
    }
  }
  return 0;
}
