#P6570. [NOI Online #3 提高组] 优秀子序列

[NOI Online #3 提高组] 优秀子序列

题目描述

给定一个长度为 nn 的非负整数序列 A={a1,a2,⋯ ,an}A=\{a_1,a_2,\cdots,a_n\},对于 AA 的一个子序列 B={ab1,ab2,⋯ ,abm}B=\{a_{b_1},a_{b_2},\cdots,a_{b_m}\}(0≤m≤n0\le m\le n,1≤b1<b2<⋯<bm≤n1\le b_1<b_2<\cdots<b_m\le n,下同),称 BB 是 AA 的优秀子序列当且仅当,其任意两个不同元素的按位与结果均为 00,即:∀1≤i<j≤m\forall 1\le i<j\le m,满足:abi and abj=0a_{b_i}~\mathrm{and}~a_{b_j}=0,其中  and ~\mathrm{and}~ 是按位与运算。

对于子序列 B={ab1,ab2,⋯ ,abm}B=\{a_{b_1},a_{b_2},\cdots,a_{b_m}\},我们定义其价值为 φ(1+∑i=1mabi)\varphi(1+\sum_{i=1}^m a_{b_i}),其中 φ(x)\varphi(x) 表示小等于 xx 的正整数中与 xx 互质的数的个数。

现在请你求出 AA 的所有优秀子序列的价值之和,答案对 109+710^9+7 取模。

输入格式

第一行一个正整数 nn 表示序列长度。

第二行 nn 个用空格分隔的非负整数,表示 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n。

输出格式

仅一行一个整数,表示答案对 109+710^9+7 取模的结果。

4
1 2 2 3
12

提示

样例 1 解释

符合条件的子序列有:∅\emptyset,{1}\{1\},{2}\{2\},{2}\{2\},{3}\{3\},{1,2}\{1,2\},{1,2}\{1,2\},它们价值依次为 11,11,22,22,22,22,22,总和为 1212。

数据规模与约定

  • 对于 10%10\% 的数据,保证 ai≤1a_i\le 1。
  • 对于 30%30\% 的数据,保证 ai≤1000a_i\le 1000。
  • 对于 60%60\% 的数据,保证 ai≤30000a_i\le 30000。
  • 另有 10%10\% 的数据,保证 n≤20n\le 20。
  • 对于 100%100\% 的数据,保证 1≤n≤1061\le n\le 10^6,0≤ai≤2×1050\le a_i\le 2\times 10^5。