#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
#include <array>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <cstdint>
#include <unordered_set>
#include <ctime>
#include <numeric>
#include <cstdint>

using llint = long long int;

using namespace std;
struct UnionFind {
  
  vector<int> par; // par[i]:iの親の番号　(例) par[3] = 2 : 3の親が2

  UnionFind(int N) : par(N) { //最初は全てが根であるとして初期化
    for(int i = 0; i < N; i++) par[i] = i;
  }

  int root(int x) { // データxが属する木の根を再帰で得る：root(x) = {xの木の根}
    if (par[x] == x) return x;
    return par[x] = root(par[x]);
  }

  void unite(int x, int y) { // xとyの木を併合
    int rx = root(x); //xの根をrx
    int ry = root(y); //yの根をry
    if (rx == ry) return; //xとyの根が同じ(=同じ木にある)時はそのまま
    par[rx] = ry; //xとyの根が同じでない(=同じ木にない)時：xの根rxをyの根ryにつける
  }

  bool same(int x, int y) { // 2つのデータx, yが属する木が同じならtrueを返す
    int rx = root(x);
    int ry = root(y);
    return rx == ry;
  }
};

std::array<bool, 1000001> primes;
std::set<int> prime_list;
void init_primes(){
  for(int i=0; i<1000001; i++){
    primes[i] = true;
  }
  primes[0] = false;
  primes[1] = false;

  for(int i=2; i<1000001; i++){
    if(primes[i] == false) continue;

    prime_list.insert(i);
    int tmp = i;
    while(tmp+i < 1000001){
      tmp += i;
      primes[tmp] = false;
    }
  }
}

std::set<int> prime_decomposition(const int num){
  int tmp = num;
  std::set<int> ret;
  for(const auto& elem: prime_list){
    while(tmp % elem == 0){
      tmp /= elem;
      ret.insert(elem);
    }
  }
  return ret;
}

bool is_pairwise_coprime(const std::vector<int> &A){
  std::set<int> ret;
  for(int i=0; i<A.size(); i++){
    std::set<int> decomposed = prime_decomposition(A[i]);
    int cnt_ret = ret.size(), decomp_ret = decomposed.size();
    ret.insert(decomposed.begin(), decomposed.end());
    if(cnt_ret + decomp_ret > ret.size()) return false;
  }

  return true;
}
bool is_setwise_coprime(const std::vector<int> &A){
  int val = A[0];
  for(const auto& elem: A){
    val = std::gcd(val, elem);
  }
  return val == 1;
}

void solve(void){

  int n;
  std::cin >> n;
  std::vector<int> A(n);
  for(int i=0; i<n; i++){
    std::cin >> A[i];
  }

  if(is_pairwise_coprime(A))     std::cout << "pairwise coprime" << std::endl;
  else if(is_setwise_coprime(A)) std::cout << "setwise coprime"  << std::endl;
  else                           std::cout << "not coprime"      << std::endl;
  return;
}
int main(void){
  init_primes();
  solve();
  return 0;
}



