// #define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define rep(i, n) for (int i = 0; i < n; ++i)
#define REP(i, n) for (int i = 0; i < n; ++i)
#define range(i,a,b) ((a)<=(i) && (i)<(b))
#define debug(x) cout << #x << " = " << (x) << endl;
#define fs first
#define sc second
#define pb push_back
#define eb emplace_back
#define SP << " " <<

typedef long long ll;
typedef pair<int, int> P;
typedef tuple<int, int, int> T;
typedef vector<int> vec;
typedef vector<P> pvec;
typedef vector<vector<int>> vvec;
typedef vector<vector<P>> pvvec;
typedef priority_queue<int> PQI;
typedef priority_queue<P> PQP;
typedef priority_queue<int,vector<int>,greater<int>> PQIG;
typedef priority_queue<P,vector<P>,greater<P>> PQPG;

const vector<int> DX = {0, -1, 0, 1, 1, 1, -1, -1};
const vector<int> DY = {1, 0, -1, 0, 1, -1, 1, -1};
constexpr int MOD = (1000000007);
// const int MOD = (998244353);
// const int INF = (1 << 30); // 1073741824
const ll INF = (1LL << 60); // 1152921504606846976
const double PI = (3.141592653589794);
const double EPS = (0.0000000001); // 10^(-10)

template<class T> inline bool chmin(T& a, T b) {if (a > b) {a = b; return 1;} return 0;}
template<class T> inline bool chmax(T& a, T b) {if (a < b) {a = b; return 1;} return 0;}
template<class T> inline T ceil(T a, T b) {return T((a + b - 1) / b);}
template<class T> inline T round(T a, T b) {return T(a / b);}
template< typename T1, typename T2 > istream &operator>>(istream &is, pair< T1, T2 > &p) { is >> p.first >> p.second; return is; }
template <class T> inline void out(T &a) { bool flag=true; for(auto&x:a){if(flag) {flag=false;} else{ cout << ' '; } cout<<x; } cout << endl; }



//----------------------------------------------------------------
int nmax=200000; // 2*(10^5)
vvec G(nmax);


int n;
vec a;
int gcd(int x, int y) { return y ? gcd(y, x%y) : x; }
int lcm(int x, int y) { return x/gcd(x, y)*y; }
int mod_pow(int x, int y) { int res = 1; while (y > 0) { if (y & 1) { res = res * x % MOD; } x = x * x % MOD; y >>= 1; } return res; }
int cmb(int n,int k){ if(n<k){ return 0;} int res=1,nn=n,kk=1;k=min(k,n-k); for(int i=0;i<k;i++){ res*=nn-i;res/=kk+i;} return res; }
ll comb(ll n,ll k){ ll res=1; for(int i=0;i<k;i++){ (res*=(n-i)%MOD)%=MOD; } for(int i=1;i<=k;i++){ (res*=mod_pow(i,MOD-2))%=MOD; } return res; }
int to_int(string s) { int n = s.size(); int ans = 0; for (int i = 0; i < n; i++) { ans = ((ans * 10) + (s[i] - '0')) % MOD; } return ans; }
int DigitSum(int x){ int ret=0; while(x){ ret++;x/=10;} return ret; }
bool is_prime(int n) { for(int i = 2; i*i <= n; i++) { if (n % i == 0) return false; } return n != 1; }
int extgcd(int a, int b, int& x, int& y) { // ax+by = gcd(a,b) >> gcd(a,b)
  int d = a;
  if(d != 0) { d = extgcd(b, a%b, y, x); y -= (a/b)*x; }
  else { x = 1, y = 0; }
  return 0;
}

vector<int> pri;
bool inited=false;
void init(int x){ // x以下の素数テーブルpriを生成 O(n)
    vector<bool> flag(x+1,false);
    for(int i = 2; i <= x; i++){
        if(flag[i]) continue;
        pri.emplace_back(i);
        for(int j = i; j <= x; j+=i) flag[j] = true;
    }
    inited=true;
}

pvec pfact(int n) {
    pvec res;
    if(inited){
        for(int &p : pri){
            if(n % p != 0) continue;
            int cnt = 0;
            while(n % p == 0) { ++cnt; n /= p; }
            res.emplace_back(p, cnt);
        }
    }
    else{
        for(int p = 2; p * p <= n; ++p){
            if(n % p != 0) continue;
            int cnt = 0;
            while(n % p == 0) { ++cnt; n /= p; }
            res.emplace_back(p, cnt);
        }
    }
    if (n!=1) res.emplace_back(n, 1); // n^1/2よりも大きな素数
    return res;
} // 素数判定 [pvec].size()==1 && [pvec].sc == 1

void solve4ts()
{
  
  cin>>n;
  a.resize(n);
  rep(i,n){
    cin>>a[i];
  }
  int g=a[0];
  rep(i,n){
    g=gcd(g,a[i]);
  }
  if(g==1){
    int dame=0;
    map<int,int> d;
    init(1000+1);
    
    for(auto x:pri){
      int memo=0;
      rep(i,n){
        if(a[i]%x==0) memo++;
        while(a[i]!=1 && a[i]%x==0){
          a[i]/=x;
        }
      }
      if(memo>=2){
        dame++;
        break;
      }
      
    }

    rep(i,n){
      d[a[i]]++;
      if(a[i]!=1 && d[a[i]]==2) dame++;
    }

    if(dame==0){
      cout<<"pairwise coprime"<<endl;
    }
    else{
      cout<<"setwise coprime"<<endl;
    }
  }
  else{
    cout<<"not coprime"<<endl;
  }
  
  
}
//-----------------------------------------------------------------

signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(15);
  int repeat = 1;
  // cin >> repeat;
  while(repeat--) solve4ts();
}

/*

g++ -std=c++1z code.cpp

./a.out

*/

Measured memory_bytes: 46896