Problem:
Score : 400 points

Problem Statement

Takahashi has N sticks that are distinguishable from each other. The length of the i-th stick is L_i.

He is going to form a triangle using three of these sticks. Let a, b, and c be the lengths of the three sticks used. Here, all of the following conditions must be satisfied:

a < b + c

b < c + a

c < a + b

How many different triangles can be formed? Two triangles are considered different when there is a stick used in only one of them.

Constraints

All values in input are integers.

3 \leq N \leq 2 \times 10^3

1 \leq L_i \leq 10^3

Input

Input is given from Standard Input in the following format:

N
L_1 L_2 ... L_N

Constraints

Print the number of different triangles that can be formed.

Sample Input 1

4
3 4 2 1

Sample Output 1

1

Only one triangle can be formed: the triangle formed by the first, second, and third sticks.

Sample Input 2

3
1 1000 1

Sample Output 2

0

No triangles can be formed.

Sample Input 3

7
218 786 704 233 645 728 389

Sample Output 3

23

Solution in Haskell (GHC 7.10.3) (judge verdict: Time Limit Exceeded)

import Data.Maybe
import Control.Monad
import qualified Data.ByteString.Char8 as C

readInt' = fst.fromJust.C.readInt
readLnInt = map readInt'.C.words<$>C.getLine
readCsInt n = concat<$>replicateM n readLnInt

x ? (a,b) = if x then a else b
a~>(f,x) = [a] ++ (null x)?([],f x)
half = flip div 2
aliq = ((0==).).mod

main = do
 getLine
 inputs <- readLnInt
 print $ solve inputs

solve :: [Int] -> Int
solve [a] = 0
solve (a:b) = solve2 a b + (null b)?(0,solve b)

solve2 :: Int -> [Int] -> Int
solve2 a [b] = 0
solve2 a (b:c) = solve3 (a,b) c + (null c)?(0,solve2 a c)

solve3 :: (Int,Int) -> [Int] -> Int
solve3 (a,b) (c:d) = (judge [a,b,c])?(1,0) + (null d)?(0,solve3 (a,b) d)

judge [a,b,c] = bound [abs(a-b),c,a+b]
bound [a,b,c] = a<b && b<c