import java.util.*

fun main(args: Array<String>) {
    val N = readLine()!!.toInt()
    val L = readLine()!!.split(" ").map {it.toInt()}.sorted()

    var res = 0L

    for (i in L.indices) for (j in i + 1 until L.size) {
        val l = Math.abs(L[i] - L[j])
        val u = L[i] + L[j]

        val a = Math.max(upperBound(L, l), j + 1)
        val b = lowerBound(L, u)

        if (b < a) {
            continue
        }

        res += (b - a)

        if (i in a until b) {
            res -= 1L
        }
        if (j in a until b) {
            res -= 1L
        }
    }

    println(res)
}

private fun lowerBound(list: List<Int>, v: Int): Int {
    if (list.last() < v) {
        return list.size
    }

    var l = -1
    var u = list.size - 1

    while (u - l > 1) {
        val c = (u + l) / 2
        if (list[c] >= v) {
            u = c
        } else {
            l = c
        }
    }

    return u
}

private fun upperBound(list: List<Int>, v: Int): Int {
    var l = 0
    var u = list.size

    while (u - l > 1) {
        val c = (u + l) / 2
        if (list[c] > v) {
            u = c
        } else {
            l = c
        }
    }

    return u
}
