#include <bits/stdc++.h>
using namespace std;
vector<pair<char, int> > V;
map<pair<char, int>, int> seen;
set<int> seen2;
set<int> inside;
map<int, int> discard;
int main() {
  int n, m;
  cin >> n >> m;
  int last;
  int pos;
  for (int k = 0; k < m; k++) {
    char c;
    int x;
    cin >> c >> x;
    V.push_back(make_pair(c, x));
    seen[make_pair(c, x)]++;
    seen2.insert(x);
    if (!seen.count(make_pair('+', x)) && seen.count(make_pair('-', x))) {
      inside.insert(x);
      last = x;
    }
  }
  vector<int> ans;
  if (inside.size()) {
    bool flag = false;
    for (int k = 0; k < m; k++) {
      char c = V[k].first;
      int id = V[k].second;
      if (inside.size() && inside.count(last) <= 0) {
        flag = true;
        break;
      }
      if (c == '+') inside.insert(id);
      if (c == '-') inside.erase(id);
    }
    if (inside.size() && inside.count(last) <= 0) flag = true;
    if (!flag) ans.push_back(last);
    for (int k = 1; k <= n; k++)
      if (seen2.count(k) <= 0) ans.push_back(k);
    sort(ans.begin(), ans.end());
    cout << ans.size() << endl;
    for (int k = 0; k < ans.size(); k++) cout << ans[k] << " ";
  } else {
    bool flag = false;
    last = V[0].second;
    for (int k = 0; k < m; k++) {
      char c = V[k].first;
      int id = V[k].second;
      if (inside.size() && inside.count(last) <= 0) {
        flag = true;
        break;
      }
      if (c == '+') inside.insert(id);
      if (c == '-') inside.erase(id);
    }
    if (inside.size() && inside.count(last) <= 0) flag = true;
    if (!flag) ans.push_back(last);
    for (int k = 1; k <= n; k++)
      if (seen2.count(k) <= 0) ans.push_back(k);
    sort(ans.begin(), ans.end());
    cout << ans.size() << endl;
    for (int k = 0; k < ans.size(); k++) cout << ans[k] << " ";
  }
  return 0;
}
