import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.PrintWriter
import kotlin.math.max
import kotlin.math.min

val br = BufferedReader(InputStreamReader(System.`in`))
val out = PrintWriter(System.out)

fun main() {
    br.use { out.use {
        solve()
        out.flush()
    } }
}

fun solve() {
//    すべてが素　同じものがない
    // 最大公約数が1 やるだけ

    val n = readInteger()
    val aList = readLongList()
    val tmp = IntArray(1000001)

    val primeTable = primeTable(1000000)
    for (a in aList) {
        var target = a.toInt()
        while (primeTable[target] != target.toLong()) {
            val prime = primeTable[target].toInt()
            tmp[prime]++

            while (target > 1 && target % prime == 0) {
                target /= prime
            }
        }
    }

    if (tmp.max()!! <= 1) {
        out.println("pairwise coprime")
        return
    }

    val aaaa = aList.reduce { acc, a -> gcd(acc, a) }
    if (aaaa == 1L) {
        out.println("setwise coprime")
        return
    }

    out.println("not coprime")
}

/** O(nlog(logn)) // n * n <= Int.MAX_VALUE, n <= 10^6 */
fun primeTable(n: Int): LongArray {
    val table = LongArray(n + 1) { it.toLong() }
    if (n >= 0) table[0] = 0
    if (n >= 1) table[1] = 1
    var i = 2
    while (i * i <= n) {
        if (table[i] == i.toLong()) {
            for (j in (i + i)..n step i) { table[j] = i.toLong()}
        }
        i++
    }
    return table
}

/** O(log(n)): n = min(a, b) */
tailrec fun gcd(a: Long, b: Long): Long = if (b == 0L) a else gcd(b, a % b)

fun readInteger() = Integer.parseInt(br.readLine())
fun readLong() = java.lang.Long.parseLong(br.readLine())
fun readStringList() = br.readLine()!!.split(' ')
fun readIntegerList() = readStringList().map(Integer::parseInt)
fun readLongList() = readStringList().map(java.lang.Long::parseLong)
fun readDoubleList() = readStringList().map(java.lang.Double::parseDouble)
