Codeforces Round 448 (Div. 2)
C
Square Subsets
Codeforces
2000
原题
← BD →
翻译中…

Petya was late for the lesson too. The teacher gave him an additional task. For some array $*a*$ Petya should find the number of different ways to select non-empty subset of elements from it in such a way that their product is equal to a square of some integer.

翻译中…

Two ways are considered different if sets of indexes of elements chosen by these ways are different.

翻译中…

Since the answer can be very large, you should find the answer modulo $10^{9} + 7$.

翻译中…

Input

翻译中…

First line contains one integer $*n*$ ($1 ≤ *n* ≤ 10^{5}$) — the number of elements in the array.

翻译中…

Second line contains $*n*$ integers $*a*_{*i*}$ ($1 ≤ *a*_{*i*} ≤ 70$) — the elements of the array.

翻译中…

Output

翻译中…

Print one integer — the number of different ways to choose some elements so that their product is a square of a certain integer modulo $10^{9} + 7$.

翻译中…

Note

翻译中…

In first sample product of elements chosen by any way is $1$ and $1 = 1^{2}$. So the answer is $2^{4} - 1 = 15$.

翻译中…

In second sample there are six different ways to choose elements so that their product is $4$, and only one way so that their product is $16$. So the answer is $6 + 1 = 7$.

翻译中…

样例

Input #1
4
1 1 1 1
Output #1
15
InputCopy OutputCopy
Input #2
4
2 2 2 2
Output #2
7
InputCopy OutputCopy
Input #3
5
1 2 4 5 8
Output #3
7
InputCopy OutputCopy
题目信息
题号
895C
时间限制
4 s
内存限制
256 MB
标签
位运算
组合数学
动态规划
数学

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。