Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

C. Partitioning the Array
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Allen has an array a1,a2,,an. For every positive integer k that is a divisor of n, Allen does the following:

  • He partitions the array into nk disjoint subarrays of length k. In other words, he partitions the array into the following subarrays: [a1,a2,,ak],[ak+1,ak+2,,a2k],,[ank+1,ank+2,,an]
  • Allen earns one point if there exists some positive integer m (m2) such that if he replaces every element in the array with its remainder when divided by m, then all subarrays will be identical.

Help Allen find the number of points he will earn.

Input

Each test consists of multiple test cases. The first line contains a single integer t (1t104) — the number of test cases. The description of the test cases follows.

The first line of each test case contains a single integer n (1n2105) — the length of the array a.

The second line of each test case contains n integers a1,a2,,an (1ain) — the elements of the array a.

It is guaranteed that the sum of n over all test cases does not exceed 2105.

Output

For each test case, output a single integer — the number of points Allen will earn.

Example
Input
8
4
1 2 1 4
3
1 2 3
5
1 1 1 1 1
6
1 3 1 1 3 1
6
6 2 6 2 2 2
6
2 6 3 6 6 6
10
1 7 5 1 4 3 1 3 1 4
1
1
Output
2
1
2
4
4
1
2
1
Note

In the first test case, k=2 earns a point since Allen can pick m=2 and both subarrays will be equal to [1,0]. k=4 also earns a point, since no matter what m Allen chooses, there will be only one subarray and thus all subarrays are equal.

In the second test case, Allen earns 1 point for k=3, where his choice for m does not matter.