小苯的逆序对
题号:NC265038
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小苯有一个长度为 n 的排列 p。他很想知道这个排列中有多少个逆序对满足互素。

形式化的,有多少个满足 (i < j) 且 (a_i > a_j)gcd(a_i, a_j) = 1 的 (i, j) 对。

输入描述:

输入包含两行。
第一行一个正整数 n(1 \leq n \leq 2\times 10^5)。表示排列的长度
第二行 n 个正整数p_i (1 \leq p_i \leq n)表示排列 p,保证 1n 的每个正整数出现且恰好仅出现一次。

输出描述:

输出包含一行一个整数,表示排列 p 的互素逆序对个数。
示例1

输入

复制
5
5 4 3 2 1

输出

复制
9
示例2

输入

复制
8
1 3 8 7 2 4 6 5

输出

复制
8
示例3

输入

复制
2
1 2

输出

复制
0

备注:

其中 gcd(x, y) 表示 x, y 的最大公因数,例如 gcd(12, 16) = 4, gcd(1, 4) = 1