#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int v[100000];
int main()
{
    int n,i,j,k,nr_triunghiuri=0;
    fin>>n;
    for(i=0;i<n;i++)
    {
        fin>>v[i];
    }
    //sortam vectorul ca sa avem laturile in ordine crescatoare pentru a verifica daca suma a doua laturi este mai mare decat o a treia latura
    sort(v,v+n);
    //prima latura
    for(i=0;i<n-2;i++)
    {   //a doua latura
        for(j=i+1;j<n-1;j++)
        {   //a treia latura
            for(k=j+1;k<n;k++)
            {
                //daca suma a doua laturi este mai mare decat cea de-a treia latura
                if(v[i]+v[j]>=v[k])
                    nr_triunghiuri++;
                else break;
            }
        }
    }
    fout<<nr_triunghiuri;
    return 0;
}