数论
题号:NC292417
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

给你一个正整数数组 a_1,a_2,\cdots,a_n\ (1 \leqq a_i \leqq 10^5),保证 a 内元素\textbf{互不相同},请你对每个小于等于数组 a 内最大值的正整数 g,求出是否存在两对下标 (i_1, j_1), (i_2, j_2) 满足 1 \leq i_1, j_1, i_2, j_2 \leq n, \gcd(a_{i1}, a_{j1}) = \gcd(a_{i2}, a_{j2}) = g,且i_1, j_1, i_2, j_2 两两不同,当存在多组 下标 (i_1, j_1)(i_2, j_2) 时,请输出任意一组,否则当不存在解时输出 -1

输入描述:

第一行输入一个整数 n\ (1 \leqq n \leqq 10^5) 代表数组中的元素数量。

第二行输入 n 个互不相同的正整数 a_1,a_2,\cdots,a_n\ (1 \leqq a_i \leqq 10^5) 代表数组元素。

输出描述:

输出有 \max_{i=1}^{n} a_i 行,第 i 行表示 g = i 时的答案。
示例1

输入

复制
6
2 6 4 7 1 10

输出

复制
5 3 1 4
3 2 1 6
-1
-1
-1
-1
-1
-1
-1
-1

说明

\gcd(a_2, a_3) = \gcd(a_1, a_6) = 2