n = gets.to_i
length = gets.split.map(&:to_i).sort
counts = 0

# 三辺は、a < b < c
# cを最大から繰り返す
(n-1).downto(2) do |c|
  a=0 #aは最小から
  b=c-1 #bは最大から(<c)
  while a<b
#p [l, r, i, (r-l)]
    # 条件通り三角形が作れる場合、a~bまでを加算して、bを下げる
    if length[c] < length[a]+length[b]
      counts += (b-a)
      b -= 1
    # 作れない場合は、aを上げて再チャレンジ
    else
      a += 1
    end
  end
end

puts counts