#SummerP0010. 薯条队列取名法

薯条队列取名法

Description

nn 根薯条,第 ii 根薯条的长度为 aia_i

现在你要从中选出三根薯条,并给它们组成一个"薯条小队"。为了让小队名字显得很有文化,三根薯条的长度之和必须能被 33 整除。

请问有多少种不同的选择方法?

两种选择不同,当且仅当选出的薯条下标集合不同。

Format

Input

第一行一个整数 n(3n2×105)n(3 \le n \le 2 \times 10^5)

第二行 nn 个整数 a1,a2,,an(0ai1018)a_1,a_2,\ldots,a_n(0 \le a_i \le 10^{18})

Output

输出一行一个整数,表示满足条件的三元组数量。

Samples

6
1 2 3 4 5 6
8

Note

样例说明:

这些数对 33 取模后的结果分别为:1 2 0 1 2 01 \ 2 \ 0 \ 1 \ 2 \ 0 余数为 0,1,20,1,2 的数各有 22 个。

选择一根余数为 00、一根余数为 11、一根余数为 22 的薯条即可,共有2×2×2=82 \times 2 \times 2 = 8 种选择。