#include <bits/stdc++.h>
using namespace std;
template <class T>
T Abs(T x) {
  return x < 0 ? -x : x;
}
int N, M;
int main() {
  while (cin >> N >> M) {
    deque<pair<char, int> > record;
    char op;
    int id;
    vector<bool> appeared(N + 1, false);
    vector<int> needAddOn;
    vector<bool> on(N + 1, false);
    for (int i = (int)0, _m = (int)M; i < _m; ++i) {
      cin >> op >> id;
      record.push_back(make_pair(op, id));
      if (!on[id] && op == '-') needAddOn.push_back(id);
      if (op == '+') on[id] = true;
      appeared[id] = true;
    }
    for (int i = (int)0, _m = (int)(int)needAddOn.size(); i < _m; ++i) {
      record.push_front(make_pair('+', needAddOn[i]));
    }
    int firstlogon = record[0].second;
    set<int> cur;
    bool always = true;
    for (int i = (int)0, _m = (int)(int)record.size(); i < _m; ++i) {
      if (record[i].first == '+') {
        cur.insert(record[i].second);
      }
      if (record[i].first == '-') {
        cur.erase(record[i].second);
      }
      if ((int)cur.size() > 0 && cur.find(firstlogon) == cur.end()) {
        always = false;
        break;
      }
    }
    vector<int> ans;
    if (always) ans.push_back(firstlogon);
    for (int i = (int)1, _m = (int)N + 1; i < _m; ++i)
      if (!appeared[i]) ans.push_back(i);
    sort(ans.begin(), ans.end());
    cout << (int)ans.size() << endl;
    if ((int)ans.size() > 0) {
      cout << ans[0];
      for (int i = (int)1, _m = (int)(int)ans.size(); i < _m; ++i)
        cout << " " << ans[i];
      cout << endl;
    }
  }
}
