#include <bits/stdc++.h>
using namespace std;
struct Member {
  char status = '0';
  bool IsLeader = true;
};
void Available(string& Avai, int num, char signal);
int main() {
  string Avai;
  int n, m, ID;
  int IsReallyLeader = 0;
  char signal;
  cin >> n >> m;
  vector<Member> Member(n + 1);
  vector<int> CanBeLeader(0);
  for (int i = 0; i < m; i++) {
    cin >> signal >> ID;
    Available(Avai, ID, signal);
    if (i == 0) {
      Member[ID].status = signal;
      IsReallyLeader = ID;
      continue;
    }
    if (Avai.length() > 0 && signal == '-')
      Member[ID].IsLeader = false;
    else if (Avai.length() > 1 && signal == '+')
      Member[ID].IsLeader = false;
    else if (Member[ID].status == '0' && signal == '+')
      Member[ID].IsLeader = false;
    if (signal == '-' && Member[ID].status == '0')
      Member[IsReallyLeader].IsLeader = false;
    else if (Member[IsReallyLeader].status == '-' && ID != IsReallyLeader)
      Member[IsReallyLeader].IsLeader = false;
    if (Member[ID].IsLeader) IsReallyLeader = ID;
    Member[ID].status = signal;
  }
  int amount = 0;
  for (int i = 1; i <= n; i++) {
    if (Member[i].IsLeader) ++amount;
  }
  cout << amount << endl;
  for (int i = 1; i <= n; i++)
    if (Member[i].IsLeader) cout << i << " ";
  cout << endl;
}
void Available(string& Avai, int num, char signal) {
  char str = num + 48;
  int position = Avai.find(str);
  if (signal == '-' && position != -1)
    Avai.erase(Avai.begin() + position);
  else if (signal == '+')
    Avai += str;
}
