#include <bits/stdc++.h>
const int N = 100001;
int Pri[200005];
int NN, Cnt[100005], Mac[100005];
bool Use[200005];
void GetPrimeList() {
  int TmpN = sqrt(N);
  for (int i = 2; i <= N; ++i) Use[i] = true;
  for (int i = 2; i <= N; ++i) {
    if (Use[i]) Pri[++Pri[0]] = i;
    for (int j = 1; j <= Pri[0] && i * Pri[j] <= N; ++j) {
      Use[i * Pri[j]] = false;
      if (i % Pri[j] == 0) break;
    }
    if (i <= TmpN) NN = Pri[0];
  }
  ++NN;
  for (int i = 1; i <= N; ++i) Use[i] = false;
}
int Add(int x) {
  int t = x;
  for (int i = 1; i <= NN; ++i)
    if (t % Pri[i] == 0) {
      if (Cnt[Pri[i]] != 0) return Mac[Pri[i]];
      for (; t % Pri[i] == 0; t /= Pri[i])
        ;
    }
  if (t != 1 && Cnt[t] != 0) return Mac[t];
  t = x;
  for (int i = 1; i <= NN; ++i)
    if (t % Pri[i] == 0) {
      ++Cnt[Pri[i]];
      Mac[Pri[i]] = x;
      for (; t % Pri[i] == 0; t /= Pri[i])
        ;
    }
  if (t != 1) {
    ++Cnt[t];
    Mac[t] = x;
  }
  Use[x] = true;
  return -1;
}
void Del(int x) {
  int t = x;
  for (int i = 1, j, k; i <= NN; ++i)
    if (t % Pri[i] == 0) {
      --Cnt[Pri[i]];
      Mac[Pri[i]] = 0;
      for (; t % Pri[i] == 0; t /= Pri[i])
        ;
    }
  if (t != 1) {
    --Cnt[t];
    Mac[t] = 0;
  }
  Use[x] = false;
}
int main() {
  GetPrimeList();
  int n, m, num;
  char op;
  scanf("%d %d\n", &n, &m);
  for (int i = 1, ret; i <= m; ++i) {
    scanf("%c %d\n", &op, &num);
    if (op == '+') {
      if (Use[num])
        puts("Already on");
      else {
        ret = Add(num);
        if (ret == -1)
          puts("Success");
        else
          printf("Conflict with %d\n", ret);
      }
    } else {
      if (!Use[num])
        puts("Already off");
      else {
        Del(num);
        puts("Success");
      }
    }
  }
  return 0;
}
