#L2690. 「POI2012 R1」距离 Distance

    ID: 3303 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>数论素数判定欧几里得算法积性函数大整数质因数分解数据结构ST表Hashing

「POI2012 R1」距离 Distance

题目描述

译自 POI 2012 Stage 1. 「Distance」

定义一次「操作」为将一个正整数除以或乘以一个质数。定义函数 d(a,b)d(a, b) 表示将 aa 进行若干次“操作”变成 bb 所需要的最小操作次数。例如,d(69,42)=3d(69, 42) = 3

dd 显然是一个距离函数,满足以下性质:

  • d(a,a)=0d(a, a) = 0
  • d(a,b)=d(b,a)d(a, b) = d(b, a)
  • d(a,b)+d(b,c)d(a,c)d(a, b) + d(b, c) \geq d(a, c)

给定 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n,对每个 ai(1in)a_i (1 \leq i \leq n),求 jj 使得 jij \neq id(ai,aj)d(a_i, a_j) 最小。如果有多个满足条件的 jj,应输出最小的那个。

输入格式

第一行一个正整数 n(2n100,000)n (2 \leq n \leq 100,000)

第二行 nn 个正整数 a1,a2,,an(1ai1,000,000)a_1, a_2, \ldots, a_n (1 \leq a_i \leq 1,000,000)

输出格式

输出 nn 行,每行一个整数,表示使 jij \neq id(ai,aj)d(a_i, a_j) 最小的 jj

样例

输入:

6
1
2
3
4
5
6

输出:

2
1
2
3
2
2

数据范围与提示

对于 30% 的数据有 n1000n \leq 1000

对于所有数据有 2n1052 \leq n \leq 10^5, 1ai1061 \leq a_i \leq 10^6