use proconio::input;

// 最大公約数を求める
fn gcd(a: usize, b: usize) -> usize {
	if b == 0 {
		a
	} else {
		gcd(b, a % b)
	}
}

fn main() {
	input! {
		n: usize,
		a: [usize; n],
	}

	const MAX: usize = 1000003;

	// min_prime_factor[n] = nの最小の素因数
	let mut min_prime_factor = vec![0; MAX+1];
	min_prime_factor[1] = 1;

	// エラトステネスの篩の変形
	let mut i = 2;
	while i * i < MAX {

		// iが合成数でなければ
		if min_prime_factor[i] == 0 {
			// min_prime_factor[iの倍数] = i
			let mut j = i;
			while j < MAX {
				// まだ素因数がなければiをセット
				if min_prime_factor[j] == 0 {
					min_prime_factor[j] = i;
				}
				j += i;
			}
		}

		i += 1;
	}

	// 素因数が既出か
	let mut prime_factor_set = vec![false; MAX+1];

	// 素因数分解してひとつも共通する素因数がなければpairwise coprime
	let mut pairwise_coprime = true;
	'outer: for &(mut n) in &a {

		// nを素因数分解
		let mut prime_factors: Vec<usize> = Vec::new();
		while n > 1 {
			let f = min_prime_factor[n];
			prime_factors.push(f);
			n /= f;

			// 素因数が既出だったら
			if prime_factor_set[f] {
				pairwise_coprime = false;
				break 'outer;
			}
		}

		for f in prime_factors {
			prime_factor_set[f] = true;
		}
	}

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

	// 全てのgcdが1になったらsetwise coprime
	let mut gcd_all = 0; // gcdの単位元
	for &x in &a {
		gcd_all = gcd(x, gcd_all);
	}

	if gcd_all == 1 {
		println!("setwise coprime");
	} else {
		println!("not coprime");
	}
}