#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  int a[111111][2] = {0};
  bool ans[111111] = {false};
  string s;
  scanf("%d%d", &n, &m);
  int last = -1, fir = -1;
  for (int i = 0; i < m; i++) {
    int x;
    cin >> s;
    cin >> x;
    int type;
    if (s == "-")
      type = -1;
    else
      type = 1;
    a[i][0] = type;
    a[i][1] = x;
    if (type == -1 && ans[x] == false)
      last = i;
    else if (type == 1 && fir == -1)
      fir = i;
    ans[x] = true;
  }
  set<int> here;
  if (last != -1) {
    int can = a[last][1];
    for (int i = 0; i <= last; i++)
      if (a[i][0] == -1) here.insert(a[i][1]);
    bool ok = true;
    for (int i = 0; i < m; i++) {
      if (a[i][0] == -1)
        here.erase(here.find((a[i][1])));
      else
        here.insert(a[i][1]);
      if (here.size() > 0)
        here.find(can) != here.end() ? ok = true : ok = false;
      if (!ok) break;
    }
    if (ok) ans[can] = false;
  }
  if (fir != -1) {
    here.clear();
    int can = a[fir][1];
    bool ok = true;
    for (int i = 0; i < m; i++) {
      if (a[i][0] == -1) {
        set<int>::iterator it = here.find(a[i][1]);
        if (it == here.end()) {
          ok = false;
          break;
        }
        here.erase(it);
      } else
        here.insert(a[i][1]);
      if (here.size() > 0)
        here.find(can) != here.end() ? ok = true : ok = false;
      if (!ok) break;
    }
    if (ok) ans[can] = false;
  }
  vector<int> v;
  for (int i = 1; i <= n; i++)
    if (!ans[i]) v.push_back(i);
  printf("%d\n", v.size());
  for (int i = 0; i < v.size(); i++) printf("%d ", v[i]);
  printf("\n");
  return 0;
}
