#include <bits/stdc++.h>
#define rep(i,n) for(int i=0; i<(n); i++)
#define FOR(i,a,n) for(int i=(a); i<(n); i++)
#define all(v) v.begin(), v.end()
#define fi first
#define se second
#define sz(x) int(x.size())
using namespace std;
using ll = long long;
using P = pair<int ,int>;
const int INF = 1001001001;
const int MOD = 1000000007;
template<class T> inline bool chmax(T &a, T b) { if (a<b) {a=b; return 1;} return 0;}
template<class T> inline bool chmin(T &a, T b) { if (b<a) {a=b; return 1;} return 0;}

#ifdef _DEBUG
#include "debug.h"
#else
#define debug(...)
#define print(...)
#endif

map<int, int> prime_factors(int n) {
	map<int, int> res;
	if(n == 1) { // n=1 の素因数分解は n^1
		res[n] = 1;
		return res;
	}
	for(int i = 2, _n = n; i*i <= _n; ++i) {
		while(n % i == 0) {
			++res[i]; // 素因数i^{res[i]}
			n /= i;
			}
		}
	if(n != 1) res[n] = 1; // nが素数のとき
	return res;
}

int main() {
    int n; cin >> n;
    vector<int> a(n);
    rep(i, n) cin >> a[i];
    // pfの結果のfirstが全て異なるならば、pairwise coprime
    // gcdをとって1になるなら、setwise coprime
    // そうでなければ not coprime
    // unordered_set<int> facs;
    unordered_map<int, int> facs;
    int allgcd = a[0];
    rep(i, n) {
        auto mp = prime_factors(a[i]);
        for(const auto& m: mp) {
            facs[m.fi]++;
        }
        if (i>0) allgcd = gcd(allgcd, a[i]);
    }
    bool ok = true;
    for(const auto& m: facs) {
        debug(m.fi, m.se);
        if (m.se!=1) {
            ok = false;
            break;
        }
    }
    if (ok) cout << "pairwise coprime" << endl;
    else if (allgcd==1) cout << "setwise coprime" << endl;
    else cout << "not coprime" << endl;
}