#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <cstring>
#include <map>
#include <queue>
#include <cmath>
#include <complex> // complex<double> a(1.2 , 2.3);// real(): 1.2, imag()2.3
using namespace std;

#define MOD 1000000007
#define ll long long
#define ld long double
#define FOR(i,a,b) for(ll i=(ll)a;i<(ll)b;i++)
#define rep(i,n) FOR(i,0,n)
#define pb push_back
#define mp make_pair
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define rmsame(a) sort(all(a)),a.erase(unique(all(a)), a.end())
#define rmvector(a,b) rep(i,a.size())rep(j,b.size())if(a[i]==b[j]){a.erase(a.begin()+i);i--;break;}
#define first_more_idx(ve, num) upper_bound(all(ve), num)-ve.begin() // idx = first_more_idx(ve,num); if(idx = ve.size()) , then not exist
#define first_lessequal_idx(ve, num) lower_bound(all(ve), num)-ve.begin()
#define pq_pair_tB priority_queue <pair<ll,ll>, vector<pair<ll,ll> > , greater<pair<ll,ll> > >
#define pq_pair_ts priority_queue <pair<ll,ll> > // only sort first param
template<typename X> bool exist(vector<X> vec, X item){return find(all(vec), item)!=vec.end();}
ll gcd(ll a, ll b){if(b==0)return a;return gcd(b,a%b);}
ll lcm(ll a, ll b){return a/gcd(a,b)*b;}
ll power(ll x, ll n){if(n == 0) return 1;return  (n%2)? x*power(x, n-1)%MOD : power(x*x%MOD, n/2);}
ll dx[]={0, 0, -1, 1};
ll dy[]={1, -1, 0, 0};// up,down,left right

struct PrimeNumbers {
    
    vector<bool> sieve;
    vector<long long> prime;
    
    PrimeNumbers (int n) : sieve(n+1,true) {
        sieve[0] = sieve[1] = false;
        for (long long i = 2; i < sieve.size(); i++) {
            if (sieve[i]) {
                prime.push_back(i);
                for (long long j = i * i; j < sieve.size(); j += i) {
                    sieve[j] = false;
                }
            }
        }
    }
    
    bool isPrime(long long n) {
        return sieve[n];
    }
    
    int size(void) {
        return (int) prime.size();
    }
    
    long long  operator [] (int n) {
        return  prime[n];
    }
    
};
/*
 O(N loglogN) ←早い!
 usage:
 PrimeNumbers prime(N); // Nまでの素数を列挙
 prime.size();  //素数の数
 prime[i]; //i番目の素数
 prime.isPrime(A); // bool, Aの素数判別
 */

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    PrimeNumbers prime(1000000);
    
    ll N ; cin >> N ;
    vector<ll> A(N);
    rep(i, N){
        cin >> A[i];
    }
    
    ll ans = A[0];
    rep(i, A.size()){
        ans = gcd(A[i], ans);
    }

    if(ans != 1){
        cout << "not coprime" << endl;
        return 0;
    }

    map<ll, bool> used;
    
    rep(i, A.size()){
        ll aim = A[i];
        
        ll prime_idx = 0;
        
        while(aim != 1){
            ll aimprime = prime[prime_idx];
            
            bool flag = false;
            while(aim % aimprime == 0){
                aim /= aimprime;
                flag = true;
            }

            if(flag){
                if(used[aimprime]){
                    cout << "setwise coprime" << endl;
                    return 0;
                }
                used[aimprime] = true;
            }
            
            if(prime.isPrime(aim)){
                if(used[aim]){
                    cout << "setwise coprime" << endl;
                    return 0;
                }
                used[aim] = true;
                aim /= aim;;
            }
            prime_idx ++;
        }
        
    }
    


    
    cout << "pairwise coprime" << endl;
    
    //cout << fixed << setprecision(16) << ans << endl;
    return 0;
}


Measured memory_bytes: 11980