Ssyze's Geometry
题号:NC221050
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

在经过一番学习以后,Ssyze 总算对几何略知一二,所以他想考考你。

在极坐标系下,对于一个以极点为圆心,周长为 l的圆 ,我们可以沿着它的圆周建立一条数轴,使在圆上的每个点 都可以用一个实数 x ()唯一表示。

现在, Ssyze 在圆上选出了 n 个不同的点,其中第 i 个点的坐标为 x_i。他想知道,从这 n 个点中任选三个点作为顶点所构成所有三角形中,有多少个包含圆心(在内部或者在边上)?

两个三角形不同,当且仅当他们至少有一个不同的顶点。

输入描述:

第一行有两个整数   ,分别表示圆上点的个数和圆的周长。

第二行有  个不同的整数 ,分别表示 n 个点沿着周长的坐标。

输出描述:

输出一个整数,表示满足要求的三角形的个数。
示例1

输入

复制
4 100
0 30 50 80

输出

复制
4
示例2

输入

复制
8 100
92 1 12 34 45 51 84 88

输出

复制
25

备注:

第一个样例如图所示(圆的周长为 100 ):
满足要求的三角形分别为: