#include <bits/stdc++.h>
using namespace std;
int main() {
  set<int> ans;
  set<int> ans2;
  set<int> areinnow;
  ans2.clear();
  areinnow.clear();
  ans.clear();
  int n, m;
  cin >> n >> m;
  int arr[100002] = {0};
  int cmd[100002][2];
  int arrinnow[100002];
  memset(arrinnow, -1, sizeof arrinnow);
  for (int i = 0; i < m; i++) {
    char inout;
    int a;
    cin >> inout >> a;
    cmd[i][0] = (int)inout;
    cmd[i][1] = a;
    arr[a] = 1;
    if (inout == '-') {
      arrinnow[a] = 0;
      if (areinnow.find(a) != areinnow.end()) {
        areinnow.erase(areinnow.find(a));
      }
    } else {
      arrinnow[a] = 1;
      areinnow.insert(a);
    }
  }
  for (set<int>::iterator it = areinnow.begin(); it != areinnow.end(); it++) {
    ans2.insert(*it);
  }
  set<int> whenempty;
  whenempty.clear();
  set<int> nopelist;
  nopelist.clear();
  for (int i = 1; i <= n; i++) {
    if (arrinnow[i] == -1) ans.insert(i);
  }
  int innow = areinnow.size();
  int virtualsize = ans.size();
  if (innow == 1) {
    ans2.insert(*(areinnow.begin()));
  }
  for (int i = m - 1; i >= 0; i--) {
    if (innow == 0) {
      ans2.clear();
    }
    if (cmd[i][0] == '-') {
      if (innow >= 1) {
        if (ans2.find(cmd[i][1]) != ans2.end())
          ans2.erase(ans2.find(cmd[i][1]));
        nopelist.insert(cmd[i][1]);
      } else if (innow == 0) {
        ans2.insert(cmd[i][1]);
        whenempty.insert(cmd[i][1]);
      }
      if (areinnow.insert(cmd[i][1]).second) innow++;
    } else {
      if (innow == 1) {
        whenempty.insert(cmd[i][1]);
      }
      if (areinnow.find(cmd[i][1]) != areinnow.end()) {
        areinnow.erase(areinnow.find(cmd[i][1]));
        innow--;
      }
      if (innow >= 1) {
        nopelist.insert(cmd[i][1]);
        if (ans2.find(cmd[i][1]) != ans2.end()) {
          ans2.erase(ans2.find(cmd[i][1]));
        }
      }
    }
    if (innow == 1) {
      ans2.clear();
      ans2.insert(*(areinnow.begin()));
    }
  }
  if (whenempty.size() > 1) {
    ans2.clear();
  }
  for (set<int>::iterator it = ans2.begin(); it != ans2.end(); it++) {
    ans.insert(*it);
  }
  for (set<int>::iterator it = nopelist.begin(); it != nopelist.end(); it++) {
    if (ans.find(*it) != ans.end()) {
      ans.erase(ans.find(*it));
    }
  }
  cout << ans.size() << endl;
  for (set<int>::iterator it = ans.begin(); it != ans.end(); it++) {
    cout << *it << " ";
  }
  {
    {};
    cin.get();
    {}
  }
  {
    {};
    cin.get();
    {}
  }
  return 0;
}
