#!usr/bin/env python3

from collections import defaultdict, deque, Counter, OrderedDict

from bisect import bisect_left, bisect_right

from functools import reduce, lru_cache

from heapq import heappush, heappop, heapify



import itertools

import math, fractions

import sys, copy



def L(): return sys.stdin.readline().split()

def I(): return int(sys.stdin.readline().rstrip())

def SL(): return list(sys.stdin.readline().rstrip())

def LI(): return [int(x) for x in sys.stdin.readline().split()]

def LI1(): return [int(x) - 1 for x in sys.stdin.readline().split()]

def LS(): return [list(x) for x in sys.stdin.readline().split()]

def R(n): return [sys.stdin.readline().strip() for _ in range(n)]

def LR(n): return [L() for _ in range(n)]

def IR(n): return [I() for _ in range(n)]

def LIR(n): return [LI() for _ in range(n)]

def LIR1(n): return [LI1() for _ in range(n)]

def SR(n): return [SL() for _ in range(n)]

def LSR(n): return [LS() for _ in range(n)]



def perm(n, r): return math.factorial(n) // math.factorial(r)

def comb(n, r): return math.factorial(n) // (math.factorial(r) * math.factorial(n-r))



def make_list(n, *args, default=0): return [make_list(*args, default=default) for _ in range(n)] if len(args) > 0 else [default for _ in range(n)]



dire = [[1, 0], [0, 1], [-1, 0], [0, -1]]

dire8 = [[1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1]]

alphabets = "abcdefghijklmnopqrstuvwxyz"

ALPHABETS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

MOD = 1000000007

INF = float("inf")



sys.setrecursionlimit(1000000)



def main():

    N = I()

    L = sorted(LI())

    ans = 0



    for i in range(N):

        for j in range(i+1, N):

            a, b = L[i], L[j]

            # print(L[j+1:], abs(a - b), a+b, bisect_left(L[j+1:], abs(a - b)), bisect_left(L[j+1:], a + b))

            ans += bisect_left(L[j+1:], a + b) - bisect_left(L[j+1:], abs(a - b))



    print(ans)



if __name__ == '__main__':

    main()
#!usr/bin/env python3

from collections import defaultdict, deque, Counter, OrderedDict

from bisect import bisect_left, bisect_right

from functools import reduce, lru_cache

from heapq import heappush, heappop, heapify



import itertools

import math, fractions

import sys, copy



def L(): return sys.stdin.readline().split()

def I(): return int(sys.stdin.readline().rstrip())

def SL(): return list(sys.stdin.readline().rstrip())

def LI(): return [int(x) for x in sys.stdin.readline().split()]

def LI1(): return [int(x) - 1 for x in sys.stdin.readline().split()]

def LS(): return [list(x) for x in sys.stdin.readline().split()]

def R(n): return [sys.stdin.readline().strip() for _ in range(n)]

def LR(n): return [L() for _ in range(n)]

def IR(n): return [I() for _ in range(n)]

def LIR(n): return [LI() for _ in range(n)]

def LIR1(n): return [LI1() for _ in range(n)]

def SR(n): return [SL() for _ in range(n)]

def LSR(n): return [LS() for _ in range(n)]



def perm(n, r): return math.factorial(n) // math.factorial(r)

def comb(n, r): return math.factorial(n) // (math.factorial(r) * math.factorial(n-r))



def make_list(n, *args, default=0): return [make_list(*args, default=default) for _ in range(n)] if len(args) > 0 else [default for _ in range(n)]



dire = [[1, 0], [0, 1], [-1, 0], [0, -1]]

dire8 = [[1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1]]

alphabets = "abcdefghijklmnopqrstuvwxyz"

ALPHABETS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

MOD = 1000000007

INF = float("inf")



sys.setrecursionlimit(1000000)



def main():

    N = I()

    L = sorted(LI())

    ans = 0



    for i in range(N):

        k = i

        for j in range(i+1, N):

            while k < N and L[k] < L[i] + L[j]: k += 1

            ans += k - (j + 1)



    print(ans)



if __name__ == '__main__':

    main()
#!usr/bin/env python3
from collections import defaultdict, deque, Counter, OrderedDict
from bisect import bisect_left, bisect_right
from functools import reduce, lru_cache
from heapq import heappush, heappop, heapify
import itertools
import math, fractions
import sys, copy


def L():
    return sys.stdin.readline().split()


def I():
    return int(sys.stdin.readline().rstrip())


def SL():
    return list(sys.stdin.readline().rstrip())


def LI():
    return [int(x) for x in sys.stdin.readline().split()]


def LI1():
    return [int(x) - 1 for x in sys.stdin.readline().split()]


def LS():
    return [list(x) for x in sys.stdin.readline().split()]


def R(n):
    return [sys.stdin.readline().strip() for _ in range(n)]


def LR(n):
    return [L() for _ in range(n)]


def IR(n):
    return [I() for _ in range(n)]


def LIR(n):
    return [LI() for _ in range(n)]


def LIR1(n):
    return [LI1() for _ in range(n)]


def SR(n):
    return [SL() for _ in range(n)]


def LSR(n):
    return [LS() for _ in range(n)]


def perm(n, r):
    return math.factorial(n) // math.factorial(r)


def comb(n, r):
    return math.factorial(n) // (math.factorial(r) * math.factorial(n - r))


def make_list(n, *args, default=0):
    return (
        [make_list(*args, default=default) for _ in range(n)]
        if len(args) > 0
        else [default for _ in range(n)]
    )


dire = [[1, 0], [0, 1], [-1, 0], [0, -1]]
dire8 = [[1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1]]
alphabets = "abcdefghijklmnopqrstuvwxyz"
ALPHABETS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
MOD = 1000000007
INF = float("inf")
sys.setrecursionlimit(1000000)


def main():
    N = I()
    L = sorted(LI())
    ans = 0
    for i in range(N):
        for j in range(i + 1, N):
            a, b = L[i], L[j]
            # print(L[j+1:], abs(a - b), a+b, bisect_left(L[j+1:], abs(a - b)), bisect_left(L[j+1:], a + b))
            ans += bisect_left(L[j + 1 :], a + b) - bisect_left(L[j + 1 :], abs(a - b))
    print(ans)


if __name__ == "__main__":
    main()

#!usr/bin/env python3
from collections import defaultdict, deque, Counter, OrderedDict
from bisect import bisect_left, bisect_right
from functools import reduce, lru_cache
from heapq import heappush, heappop, heapify
import itertools
import math, fractions
import sys, copy


def L():
    return sys.stdin.readline().split()


def I():
    return int(sys.stdin.readline().rstrip())


def SL():
    return list(sys.stdin.readline().rstrip())


def LI():
    return [int(x) for x in sys.stdin.readline().split()]


def LI1():
    return [int(x) - 1 for x in sys.stdin.readline().split()]


def LS():
    return [list(x) for x in sys.stdin.readline().split()]


def R(n):
    return [sys.stdin.readline().strip() for _ in range(n)]


def LR(n):
    return [L() for _ in range(n)]


def IR(n):
    return [I() for _ in range(n)]


def LIR(n):
    return [LI() for _ in range(n)]


def LIR1(n):
    return [LI1() for _ in range(n)]


def SR(n):
    return [SL() for _ in range(n)]


def LSR(n):
    return [LS() for _ in range(n)]


def perm(n, r):
    return math.factorial(n) // math.factorial(r)


def comb(n, r):
    return math.factorial(n) // (math.factorial(r) * math.factorial(n - r))


def make_list(n, *args, default=0):
    return (
        [make_list(*args, default=default) for _ in range(n)]
        if len(args) > 0
        else [default for _ in range(n)]
    )


dire = [[1, 0], [0, 1], [-1, 0], [0, -1]]
dire8 = [[1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1]]
alphabets = "abcdefghijklmnopqrstuvwxyz"
ALPHABETS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
MOD = 1000000007
INF = float("inf")
sys.setrecursionlimit(1000000)


def main():
    N = I()
    L = sorted(LI())
    ans = 0
    for i in range(N):
        k = i
        for j in range(i + 1, N):
            while k < N and L[k] < L[i] + L[j]:
                k += 1
            ans += k - (j + 1)
    print(ans)


if __name__ == "__main__":
    main()

+        k = i -            a, b = L[i], L[j] -            # print(L[j+1:], abs(a - b), a+b, bisect_left(L[j+1:], abs(a - b)), bisect_left(L[j+1:], a + b)) -            ans += bisect_left(L[j + 1 :], a + b) - bisect_left(L[j + 1 :], abs(a - b)) +            while k < N and L[k] < L[i] + L[j]: +                k += 1 +            ans += k - (j + 1)