program main
    implicit none
    integer(kind=16) :: n,i,other
    integer(kind=16),allocatable :: a(:),multiplied_a(:)
    logical :: Flag
    read*,n
    allocate(a(n),multiplied_a(n+1))
    read*,a
    multiplied_a(1) = 1
    do i = 2,n+1
        multiplied_a(i) = multiplied_a(i-1) * a(i-1)
    end do
    print*,multiplied_a
    Flag = .TRUE.
    do i = 2,n
        other = multiplied_a(n+1) / multiplied_a(i)
        !print*,a(i-1),other,gcd(a(i-1),other)
        if (gcd(a(i-1),other) .ne. 1) then
            Flag = .False.
            exit
        endif 
    end do
    if (Flag) then
        print*,'pairwise coprime'
        stop
    end if
    if (gcds(a,n) == 1) then
        print*,'setwise coprime'
    else
        print*,'not coprime'
    endif 
    stop
contains
integer(16) function gcd(a, b)
    implicit none
    integer(16), intent(IN) :: a, b
    integer(16) :: l, m, n

    m = a
    n = b

    do
        l = mod(m, n)
        if (l == 0) exit
        m = n
        n = l
    end do

    gcd = n

    return
end function gcd
integer(16) function gcds(a,n)
    implicit none
    integer(16), intent(IN) :: a(n),n
    integer(16) :: i
    gcds = a(1)
    do i = 1,n
        gcds = gcd(gcds,a(i))
    end do
end function gcds
end program main