output_description: Print the number of ways to choose three of the sticks with different lengths
  that can form a triangle.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      L_1 L_2 \cdots L_N
attempt: x = int(input())
  arr = list(map(int, input().split()))
  d = dict()
  for i in arr:
      if i in d:
          d[i] += 1
      else:
          d[i] = 1
  coun = 0
  a = sorted(d.keys())
  l = len(a)
  for i in range(l - 2):
      for j in range(i + 1, l - 1):
          k = j + 1
          temp = a[i] + a[j]
          curr = d[a[i]] * d[a[j]]
          while k < l:
              if temp > a[k]:
                  coun += curr * d[a[k]]
                  k += 1
              else:
                  break
  print(coun)
  
problem_description: Statement
  
  We have sticks numbered 1, \cdots, N. The length of Stick i (1 \leq i \leq N)
  is L_i.
  
  In how many ways can we choose three of the sticks with different lengths that
  can form a triangle?
  
  That is, find the number of triples of integers (i, j, k) (1 \leq i < j < k
  \leq N) that satisfy both of the following conditions:
  
    * L_i, L_j, and L_k are all different.
    * There exists a triangle whose sides have lengths L_i, L_j, and L_k.
samples: [{"input": "5\n    4 4 9 7 5", "output": "5\n    \n\nThe following five triples (i, j, k) satisfy the conditions: (1, 3, 4), (1, 4,\n5), (2, 3, 4), (2, 4, 5), and (3, 4, 5).\n\n* * *"}, {"input": "6\n    4 5 4 3 3 5", "output": "8\n    \n\nWe have two sticks for each of the lengths 3, 4, and 5. To satisfy the first\ncondition, we have to choose one from each length.\n\nThere is a triangle whose sides have lengths 3, 4, and 5, so we have 2 ^ 3 = 8\ntriples (i, j, k) that satisfy the conditions.\n\n* * *"}, {"input": "10\n    9 4 6 1 9 6 10 6 6 8", "output": "39\n    \n\n* * *"}, {"input": "2\n    1 1", "output": "0\n    \n\nNo triple (i, j, k) satisfies 1 \\leq i < j < k \\leq N, so we should print 0."}]