
def main():
    N = int(input())
    A = list(map(int, input().split()))
    maxA = max(A)
    # エラトステネスの篩
    sieve = [0] * (maxA + 1)
    sieve[0] = sieve[1] = -1
    for i in range(maxA+1):
        if sieve[i] != 0:
            continue
        for j in range(i, maxA+1, i):
            if sieve[j] == 0:
                sieve[j] = i

    # 素因数分解
    primelist = []
    lenprimelist = 0
    for i in range(N):
        tmpset = set()
        j = A[i]
        for _ in range(N):
            tmp = sieve[j]
            if tmp <= 0:
                break
            tmpset.add(tmp)
            j = j//tmp
        lenprimelist += len(tmpset)
        primelist.append(tmpset)
    
    # 素因数の和集合を取ったときに, 元の素因数の配列の長さから小さくなっている 
    #   => ある i, j で共通する素因数を持つAi, Ajが存在する
    #   => pairwise coprime ではない
    # 全ての素因数の配列に対して共通部分を取ったときに, 空集合となる
    #   => A全体での公約数は 1 
    #   => setwise coprime である

    primeset = set()
    primeintersection = set(range(2, maxA+1))
    for s in primelist:
        primeset.update(s)
        primeintersection.intersection_update(s)
    if len(primeset) == lenprimelist:
        print('pairwise coprime')
        return
    if len(primeintersection) == 0:
        print('setwise coprime')
        return
    print('not coprime')
    return

if __name__ == "__main__":
    main()

