Problem C
Stretching Streamers
Ms. Hall wants to teach her class about common factors. She arranges her students in a circle and assigns each student an integer in the range $[2,10^9]$. She also provides the students with crepe paper streamers. The students are to stretch these streamers between pairs of students, and pull them tight. But, there are some rules.
-
Two students can stretch a streamer between them if and only if their assigned integers share a factor other than $1$.
-
There is exactly one path, going from streamer to streamer, between any two students in the circle.
-
No streamers may cross.
-
Any given student may hold an end of arbitrarily many streamers.
Suppose Ms. Hall has four students, and she gives them the numbers $2$, $3$, $30$ and $45$. In this arrangement, there is one way to stretch the streamers:
In this arrangement, there are three ways to stretch the streamers:
In how many ways can the students hold the streamers subject to Ms. Hall’s rules? Two ways are different if and only if there is a streamer between two given students one way, but none between those two students the other way.
Input
Each input will consist of a single test case. Note that your program may be run multiple times on different inputs. The first line of input will contain a single integer $n$ ($2 \le n \le 300$), which is the number of Ms. Hall’s students.
Each of the next $n$ lines will hold an integer $x$ ($2 \le x \le 10^9$). These are the numbers held by the students, in order. Remember, the students are standing in a circle, so the last student is adjacent to the first student.
Output
Output a single integer, which is the number of ways Ms. Hall’s students can satisfy her rules. Since this number may be very large, output it modulo $10^9+7$.
Sample Input 1 | Sample Output 1 |
---|---|
4 30 3 2 45 |
1 |
Sample Input 2 | Sample Output 2 |
---|---|
4 3 30 2 45 |
3 |