#include <bits/stdc++.h>
using namespace std;
vector<string> SPLIT(string str, char ch) {
  vector<string> res;
  stringstream ss(str);
  string s;
  while (getline(ss, s, ch)) res.push_back(s);
  return res;
}
long long STOI(string str, int base) {
  long long res = 0;
  for (auto c : str) {
    res *= base;
    res += c - '0';
  }
  return res;
}
string ITOS(long long val, int base) {
  string res;
  while (val > 0) {
    res += '0' + (val % base);
    val /= base;
  }
  reverse((res).begin(), (res).end());
  return res;
}
struct SieveOfEratosthenes : std::vector<int> {
  std::vector<int> primes;
  SieveOfEratosthenes(int MAXN) : std::vector<int>(MAXN + 1) {
    std::iota(begin(), end(), 0);
    for (int i = 2; i <= MAXN; i++) {
      if ((*this)[i] == i) {
        primes.push_back(i);
        for (int j = i; j <= MAXN; j += i) (*this)[j] = i;
      }
    }
  }
  using T = long long int;
  std::map<T, int> Factorize(T x) {
    assert(x <= 1LL * (int(size()) - 1) * (int(size()) - 1));
    std::map<T, int> ret;
    if (x < int(size())) {
      while (x > 1) {
        ret[(*this)[x]]++;
        x /= (*this)[x];
      }
    } else {
      for (auto p : primes) {
        while (!(x % p)) x /= p, ret[p]++;
        if (x == 1) break;
      }
      if (x > 1) ret[x]++;
    }
    return ret;
  }
  std::vector<T> Divisors(T x) {
    std::vector<T> ret{1};
    for (auto p : Factorize(x)) {
      int n = ret.size();
      for (int i = 0; i < n; i++) {
        for (T a = 1, d = 1; d <= p.second; d++) {
          a *= p.first;
          ret.push_back(ret[i] * a);
        }
      }
    }
    return ret;
  }
  std::vector<int> GenerateMoebiusFunctionTable() {
    std::vector<int> ret(size());
    for (int i = 1; i < int(size()); i++) {
      if (i == 1)
        ret[i] = 1;
      else if ((i / (*this)[i]) % (*this)[i] == 0)
        ret[i] = 0;
      else
        ret[i] = -ret[i / (*this)[i]];
    }
    return ret;
  }
};
const long long maxN = 100005;
SieveOfEratosthenes sieve(maxN);
int n;
vector<int> arr;
void runcase() {
  cin >> n;
  arr.resize(n);
  for (auto& u : arr) cin >> u;
  vector<int> cnt(maxN, 0);
  for (auto u : arr) {
    for (auto p : sieve.Factorize(u)) {
      cnt[p.first]++;
    }
  }
  int res = 1;
  for (auto u : cnt)
    if (u >= 2) res = 2;
  if (res == 2)
    for (auto u : cnt)
      if (u == n) res = 3;
  if (res == 1)
    cout << "pairwise coprime\n";
  else if (res == 2)
    cout << "setwise coprime\n";
  else
    cout << "not coprime\n";
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  runcase();
  return 0;
}
