小苯的三元组
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小苯给了你一个数组 a,他想知道数组中有多少个三元组 (i, j, k) ,满足 lcm(a_i, a_j) \leq gcd(a_j, a_k)
其中:
gcd(x, y) 表示 x, y 的最大公约数。
lcm(x, y) 表示 x, y 的最小公倍数。
注:小苯认为,(x_1, x_2, x_3)(y_1, y_2, y_3) 两个三元组不同,当且仅当至少存在一个 i, (1 \leq i \leq 3) 使得 (x_i \ne y_i)

输入描述:

输入包含两行。
第一行一个正整数 n (3 \leq n \leq 2 \times 10^5),表示数组 a 的长度。
第二行 n 个正整数 a_i (1 \leq a_i \leq 2 \times10^5) 表示数组的元素。

输出描述:

输出包含一行一个正整数,表示三元组的个数。
示例1

输入

复制
3
1 2 3

输出

复制
7

说明

(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (2, 2, 2), (1, 3, 3), (3, 3, 3)
示例2

输入

复制
5
5 6 3 1 9

输出

复制
19
示例3

输入

复制
3
1 1 1

输出

复制
27