"use strict";

const main = arg => {
    arg = arg.trim().split("\n");
    const N = parseInt(arg[0]);
    const L = arg[1].split(" ").map(n=>parseInt(n)).sort((a,b)=>b-a);
    
    // console.log(L);
    
    let answer = 0;
    
    // a<b<c かつ c < a+b の個数
    // for(let i=0; i<N-2; i++) {
    //     const c = L[i];
        
    //     for(let j=i + parseInt(1); j<N-1; j++) {
    //         const a = L[j];
            
    //         for(let k=j + parseInt(1); k<N; k++) {
    //             const b = L[k];
                
    //             if(a + b > c) {
    //                 answer++;
    //             } else {
    //                 break;
    //             }
    //         }
    //     }
    // }
    
    const keyNumbers = [];
    
    for(let i=0; i<N-1; i++) {
        const b = L[i];
        
        for(let j=i + parseInt(1); j<N; j++) {
            const a = L[j];
            

            let temp = {b: b, key: a+b}
            keyNumbers.push(temp);
        }
    }
    
    // console.log(L);
    // console.log(JSON.stringify(keyNumbers))
    
    // for(let i in keyNumbers) {
    //     //console.log("Lのなかに" + keyNumbers[i] + "以上の要素は" + L.filter(n=>n<keyNumbers[i]).length + "こある")
    //     answer += L.filter(n=>n > keyNumbers[i].b && n < keyNumbers[i].key).length;
    // }
    
    for(let i in L) {
        answer += keyNumbers.filter(n=>n.b < L[i] && n.key > L[i]).length;
    }
    
    console.log(answer);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
