Problem:
Score : 500 points

Problem Statement

We have N integers. The i-th number is A_i.

\{A_i\} is said to be pairwise coprime when GCD(A_i,A_j)=1 holds for every pair (i, j) such that 1\leq i < j \leq N.

\{A_i\} is said to be setwise coprime when \{A_i\} is not pairwise coprime but GCD(A_1,\ldots,A_N)=1.

Determine if \{A_i\} is pairwise coprime, setwise coprime, or neither.

Here, GCD(\ldots) denotes greatest common divisor.

Constraints

2 \leq N \leq 10^6

1 \leq A_i\leq 10^6

Input

Input is given from Standard Input in the following format:

N
A_1 \ldots A_N

Output

If \{A_i\} is pairwise coprime, print pairwise coprime; if \{A_i\} is setwise coprime, print setwise coprime; if neither, print not coprime.

Sample Input 1

3
3 4 5

Sample Output 1

pairwise coprime

GCD(3,4)=GCD(3,5)=GCD(4,5)=1, so they are pairwise coprime.

Sample Input 2

3
6 10 15

Sample Output 2

setwise coprime

Since GCD(6,10)=2, they are not pairwise coprime. However, since GCD(6,10,15)=1, they are setwise coprime.

Sample Input 3

3
6 10 16

Sample Output 3

not coprime

GCD(6,10,16)=2, so they are neither pairwise coprime nor setwise coprime.

Solution in Julia (1.4.0) (judge verdict: Accepted)

using DataStructures
const double = Float64
const int = Int64

parseint(x) = parse(int, x)
readint() = map(parseint, split(readline()))

function main()
  N = readint()[1]
  A = readint()


  Table = Vector{Vector{int}}(undef,10^6)
  for i in 1:10^6
    Table[i] = Vector{int}(undef,0)
  end
  
  for i in 2:10^6
    if length(Table[i]) != 0
      continue
    end
    for j in i:i:10^6
      append!(Table[j],[i])
    end
  end

  V = zeros(int,10^6)

  flag = true
  for i in 1:N
    for m in Table[A[i]]
      V[m] += 1
      if V[m] > 1
        flag = false
        break
      end
    end
    if ! flag 
      continue
    end
  end

  r = A[1]
  for i in 2:N
    r = gcd(r,A[i])
  end
  
  if r != 1
    println("not coprime")
  else
    if flag 
      println("pairwise coprime")
    else
      println("setwise coprime")
    end
  end

  
end

main()