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 Fortran (GNU Fortran 9.2.1) (judge verdict: Wrong Answer)

program main
    use,intrinsic :: iso_fortran_env
    implicit none
    integer(int32)::n,i,j,x,y
    integer(int32), allocatable:: a(:)
    logical:: pc, sc
    logical,allocatable:: t(:)


    read*, n
    allocate(a(n))
    read*, a(:)
    allocate(t(maxval(a)), source=.false.)
    pc = .true.
    do i=1,n    
        do j=1,ceiling(sqrt(dble(a(i))))
            if (mod(a(i),j) == 0) then
                x = a(i)/j
                y = j
                if (t(x) .and. x > 1) pc = .false.
                if (t(y) .and. y > 1) pc = .false.
                t(x) = .true.
                t(y) = .true.
            end if
            if (.not. pc) exit
        end do
        if (.not. pc) exit
    end do

    x = a(1)
    do i=2,n
        x = gcd(x,a(i))
    end do
    sc = x == 1

    if (pc) then
        print'(a)', "pairwise coprime"
    else if (sc) then
        print'(a)', "setwise coprime"
    else
        print'(a)', "not coprime"
    end if
contains
    function lcm(x,y) result(ret)
        integer(int32):: x,y,ret
        ret=x*y/gcd(x,y)
    end function
    recursive function gcd(x,y) result(ret)
        integer(int32):: x,y,ret
    
        if (mod(x,y) == 0) then
            ret = y
            return
        end if
    
        ret = gcd(y,mod(x,y))
    end function
end program main