function Main(input) {
  input=input.split("\n");
  if(input[input.length-1]===''){
    input.pop();
  }
  const N=input[0].split(' ')[0]-0;
  const L=input[1].split(' ').map(e=>{
    return e-0;
  }).sort((a,b)=>{
    return a-b;
  });
  var tL,giri;
  var ret=0;
  for(var i=0;i<L.length-2;i++){
    for(var j=i+1;j<L.length-1;j++){
      if(L[L.length-1]<L[i]+L[j]){
        ret+=L.length-1-j;
        continue;
      }
      if(L[j+1]>=L[i]+L[j]){
        continue;
      }
      tL=L.length-1;
      giri=j+1;
      while(tL-giri>1){
        if(L[Math.ceil((tL+giri)/2)]<L[i]+L[j]){
          giri=Math.ceil((tL+giri)/2);
        }else{
          tL=Math.ceil((tL+giri)/2);
        }
      }
      ret+=giri-j;
    }
  }
  console.log(ret);

}




//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));