#include <bits/stdc++.h>
using namespace std;
const int LIM = 1e+5 + 10;
vector<pair<int, int> > ppl;
bool used[LIM];
bool to_ans[LIM];
set<int> lasts;
int main() {
  int n, m;
  cin >> n >> m;
  char cmd;
  int id;
  for (int i = 0; i < m; i++) {
    cin >> cmd >> id;
    if (cmd == '+') {
      ppl.push_back(make_pair(i, id));
      used[id] = true;
    } else {
      if (!used[id]) ppl.push_back(make_pair(-1, id));
      ppl.push_back(make_pair(i, id));
    }
  }
  sort(ppl.begin(), ppl.end());
  set<int> cur;
  int pos = 0;
  while (ppl[pos].first == -1) {
    cur.insert(ppl[pos].second);
    pos++;
  }
  while (pos < (int)ppl.size()) {
    if (cur.find(ppl[pos].second) != cur.end()) {
      cur.erase(ppl[pos].second);
      if (cur.size() != 0)
        to_ans[ppl[pos].second] = true;
      else
        lasts.insert(ppl[pos].second);
    } else {
      if (lasts.size() > 1 ||
          (lasts.size() == 1 && lasts.find(ppl[pos].second) == lasts.end()))
        to_ans[ppl[pos].second] = true;
      if (cur.size() != 0) to_ans[ppl[pos].second] = true;
      cur.insert(ppl[pos].second);
    }
    ++pos;
  }
  if (lasts.size() != 0) {
    for (auto i = lasts.begin(); i != lasts.end(); i++) {
      if (cur.find(*i) == cur.end() && cur.size() > 0) {
        to_ans[*i] = true;
      }
    }
  }
  vector<int> ans;
  for (int i = 1; i < n + 1; i++)
    if (!to_ans[i]) {
      if (lasts.find(i) == lasts.end())
        ans.push_back(i);
      else if (lasts.size() <= 1)
        ans.push_back(i);
    }
  cout << ans.size() << endl;
  for (int i = 0; i < (int)ans.size(); i++) cout << ans[i] << ' ';
  return 0;
}
