← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n, m int
	if _, err := fmt.Fscan(reader, &n, &m); err != nil {
		return
	}

	min_prime := make([]int, n+1)
	for i := 2; i <= n; i++ {
		if min_prime[i] == 0 {
			for j := i; j <= n; j += i {
				if min_prime[j] == 0 {
					min_prime[j] = i
				}
			}
		}
	}

	on := make([]bool, n+1)
	prime_to_collider := make([]int, n+1)

	for q := 0; q < m; q++ {
		var op string
		var i int
		if _, err := fmt.Fscan(reader, &op, &i); err != nil {
			break
		}

		if op == "+" {
			if on[i] {
				fmt.Fprintln(writer, "Already on")
			} else {
				conflict := 0
				curr := i
				for curr > 1 {
					p := min_prime[curr]
					if prime_to_collider[p] != 0 {
						conflict = prime_to_collider[p]
						break
					}
					for curr%p == 0 {
						curr /= p
					}
				}

				if conflict != 0 {
					fmt.Fprintf(writer, "Conflict with %d\n", conflict)
				} else {
					fmt.Fprintln(writer, "Success")
					on[i] = true
					curr = i
					for curr > 1 {
						p := min_prime[curr]
						prime_to_collider[p] = i
						for curr%p == 0 {
							curr /= p
						}
					}
				}
			}
		} else if op == "-" {
			if !on[i] {
				fmt.Fprintln(writer, "Already off")
			} else {
				fmt.Fprintln(writer, "Success")
				on[i] = false
				curr := i
				for curr > 1 {
					p := min_prime[curr]
					prime_to_collider[p] = 0
					for curr%p == 0 {
						curr /= p
					}
				}
			}
		}
	}
}