← Home
write a go solution for Description:
You have n sticks, numbered from 1 to n. The length of the i-th stick is 2^a_i.

You want to choose exactly 3 sticks out of the given n sticks, and form a non-degenerate triangle out of them, using the sticks as the sides of the triangle. A triangle is called non-degenerate if its area is strictly greater than 0.

You have to calculate the number of ways to choose exactly 3 sticks so that a triangle can be formed out of them. Note that the order of choosing sticks does not matter (for example, choosing the 1-st, 2-nd and 4-th stick is the same as choosing the 2-nd, 4-th and 1-st stick).

Input Format:
The first line contains one integer t (1<=t<=10^4) — the number of test cases.

Each test case consists of two lines:

- the first line contains one integer n (1<=n<=3*10^5);
- the second line contains n integers a_1,a_2,...,a_n (0<=a_i<=n).

Additional constraint on the input: the sum of n over all test cases does not exceed 3*10^5.

Output Format:
For each test case, print one integer — the number of ways to choose exactly 3 sticks so that a triangle can be formed out of them.

Note:
In the first test case of the example, any three sticks out of the given 7 can be chosen.

In the second test case of the example, you can choose the 1-st, 2-nd and 4-th stick, or the 1-st, 3-rd and 4-th stick.

In the third test case of the example, you cannot form a triangle out of the given sticks with lengths 2, 4 and 8.. Output only the code with no comments, explanation, or additional text.