import bisect
n = int(input())
l = list(sorted(map(int, input().split())))


'''
a,bの値を指定し、その合計値を下回る値の最大値のインデックス番号を取得
インデックス番号から指定していたb（大きい方の値）を引く
'''
ans = 0
for a in range(n):
  for b in range(a+1, n):
    ans += bisect.bisect_left(l, l[a]+l[b]) - (b+1)
print(ans) import bisect bisect n = int(input()) n int(input()) int input() input l = list(sorted(map(int, input().split()))) l list(sorted(map(int, input().split()))) list sorted(map(int, input().split())) sorted map(int, input().split()) map int input().split() ().split () input split '''
a,bの値を指定し、その合計値を下回る値の最大値のインデックス番号を取得
インデックス番号から指定していたb（大きい方の値）を引く
''' ans = 0 ans 0 for a in range(n):
  for b in range(a+1, n):
    ans += bisect.bisect_left(l, l[a]+l[b]) - (b+1) a range(n) range n for b in range(a+1, n):
    ans += bisect.bisect_left(l, l[a]+l[b]) - (b+1) b range(a+1, n) range a+1 a 1 n ans += bisect.bisect_left(l, l[a]+l[b]) - (b+1) ans bisect.bisect_left(l, l[a]+l[b]) - (b+1) bisect.bisect_left(l, l[a]+l[b]) bisect.bisect_left bisect bisect_left l l[a]+l[b] l[a] l a l[b] l b b+1 b 1 print(ans) print ans l = list(sorted(map(int, input().split()))) list(sorted(map(int, input().split()))) l n = int(input()) int(input()) n ans = 0 0 ans ans += bisect.bisect_left(l, l[a]+l[b]) - (b+1) bisect.bisect_left(l, l[a]+l[b]) - (b+1) ans
import bisect
n = int(input())
l = list(sorted(map(int, input().split())))


'''
a,bの値を指定し、その合計値を下回る値の最大値のインデックス番号を取得
インデックス番号から指定していたb（大きい方の値）を引く
'''
ans = 0
for a in range(n):
  for b in range(a+1, n):
    ans += bisect.bisect_left(l, l[a]+l[b]) - (b+1)
print(ans)