#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vi> vvi;
typedef vector<string> vs;
typedef pair<int, int> pii;

#define sz(a) int((a).size())
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define all(c) (c).begin(),(c).end()
#define rall(c) (c).rbegin(),(c).rend()
#define ini(a, i) memset(a, i, sizeof(a))
#define inin(a, n, i) memset(a, i, sizeof(a[0])*(n))
#define contains(c, i) ((c).find(i) != (c).end())
#define present(i, c) (find(all(c), i) != (c).end())

#define trav(x, c) for(auto& x : c)
#define rep(i, n) for(int i = 0; i < n; i++)
#define repa(i, b, e) for(int i = (b)-((b)>(e)); i != (e)-((b)>(e)); i += 1-2*((b)>(e)))
	
template<class T> bool chkmax(T &x, T y) { return x < y ? x = y, true : false; }
template<class T> bool chkmin(T &x, T y) { return x > y ? x = y, true : false; }
template<class A, class B> A cvt(B x) { stringstream s; s << x; A r; s >> r; return r; }

void read() {}
void print() {}
template<class T, class... Args> void read(T& a, Args&... args) { cin >> a; read(args...); }
template<class T, class... Args> void print(T a, Args... args) { cout << a << ' '; print(args...); }
template<class... Args> void println(Args... args) { print(args...); cout << '\n'; }

#define debug(args...) { string s_(#args); replace(all(s_), ',', ' '); stringstream ss_(s_); istream_iterator<string> it_(ss_); cerr_(it_, args); }
void cerr_(istream_iterator<string> it) { (void) it; }
template<class T, class... Args> void cerr_(istream_iterator<string> it, T a, Args... args) { cerr << *it << " = " << a << endl; cerr_(++it, args...); }

template<class T, class S>  ostream& operator<<(ostream& os, const pair<T, S>& p) { os << "(" << p.first << ", " << p.second << ")"; return os; }
template<class T> ostream& operator<<(ostream &os, const vector<T> &v) { os << '{'; string sep; for (const auto &x : v) os << sep << x, sep = ", "; return os << '}'; }
template<class T> ostream& operator<<(ostream &os, const set<T> &s) { os << '{'; string sep; for (const auto &x : s) os << sep << x, sep = ", "; return os << '}'; }
template<class T, class S> ostream& operator<<(ostream &os, const map<T, S> &m) { os << '{'; string sep; for (const auto &x : m) os << sep << x, sep = ", "; return os << '}'; }
template<class T, size_t size> ostream& operator<<(ostream &os, const array<T, size> &arr) { os << '{'; string sep; for (const auto &x : arr) os << sep << x, sep = ", "; return os << '}'; }

const int INF = 0x3F3F3F3F;
const int MAXN = (int) 1e9;
const int MOD = (int) 1e9+7;

//=========================

vector<int> prime; // lista de primos ate sqrt(MAXN)

// all primes from 2 to sqrt(N)
void getprimes() {
    int n = sqrt(MAXN)+1; // soh analisa primos ate sqrt(MAXN)
    prime.clear(); prime.reserve(n);
    prime.push_back(2);
	for(int k = 3; k <= n; k += 2) {
		bool is_prime = true;
		for(int j = 0; j < sz(prime); j++) if (k % prime[j] == 0) {
	        is_prime = false;
	        break;
		}
		if (is_prime) prime.push_back(k);
	}
}

vector<int> p; // primos
vector<int> e; // expoentes

// fatoracao de 'n' em fatores p^e
void getfactors(int n) {
	if(sz(prime) == 0) getprimes();
    p.clear(); e.clear();    
    rep(i, sz(prime)) {
        if(prime[i] > n / prime[i]) break; // soh analisa primos ate sqrt(n)
        if(n % prime[i] == 0) {
            p.pb(prime[i]); e.pb(0);
            while(n % prime[i] == 0) n /= prime[i], e.back()++;
        }
    }
    if (n != 1) p.pb(n), e.pb(1);
}

void run_test() {
	int n; read(n);
    vi a(n); rep(i, n) read(a[i]);

    getprimes();
    vector<bool> cnt(MAXN);
    bool pairwise_coprime = true;

    rep(i, n) {
        int x = a[i];
        if(x == 1) continue;
        trav(k, prime) {
            if(k * k > x) break;
            if(x % k == 0) {
                if(cnt[k]) {
                    pairwise_coprime = false;
                } else {
                    cnt[k] = true;
                    while(x % k == 0) x /= k;
                }
            }
        }
        if(x != 1) {
            if(cnt[x]) {
                pairwise_coprime = false;
            } else {
                cnt[x] = true;
            }
        }
        if(!pairwise_coprime) break;
    }

    if(pairwise_coprime) {
        println("pairwise coprime");
        return;
    }

    int g = a[0];
    rep(i, n) g = gcd(g, a[i]);

    if(g == 1) {
        println("setwise coprime");
        return;
    }

    println("not coprime");
}

//=========================

int main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);
	//int t_ = 1, t__; cin >> t__; while(t_ <= t__) { cout << "Case #" << t_++ << ": "; run_test(); }
	// int t_; cin >> t_; while(t_--) run_test();
	run_test();
	return 0;	
}


Measured memory_bytes: 129088