# -*- coding: utf-8 -*-

# モジュールのインポート

import itertools



# 標準入力を取得

N = int(eval(input()))

L = list(map(int, input().split()))



# 求解処理

ans = 0

for L_i, L_j, L_k in itertools.combinations(L, 3):

    if (L_i == L_j) or (L_j == L_k) or (L_k == L_i):

        continue

    if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k):

        ans += 1



# 結果出力

print(ans)

# -*- coding: utf-8 -*-

# モジュールのインポート

import itertools





def get_input() -> tuple:

    """

    標準入力を取得する.



    Returns:\n

        tuple: 標準入力

    """

    N = int(eval(input()))

    L = list(map(int, input().split()))



    return N, L





def main(L: list) -> None:

    """

    メイン処理.



    Args:\n

        L (list): 棒の長さ

    """

    # 求解処理

    ans = 0

    for L_i, L_j, L_k in itertools.combinations(L, 3):

        if (L_i == L_j) or (L_j == L_k) or (L_k == L_i):

            continue

        if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k):

            ans += 1



    # 結果出力

    print(ans)





if __name__ == "__main__":

    # 標準入力を取得

    N, L = get_input()



    # メイン処理

    main(L)

# -*- coding: utf-8 -*-
# モジュールのインポート
import itertools

# 標準入力を取得
N = int(eval(input()))
L = list(map(int, input().split()))
# 求解処理
ans = 0
for L_i, L_j, L_k in itertools.combinations(L, 3):
    if (L_i == L_j) or (L_j == L_k) or (L_k == L_i):
        continue
    if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k):
        ans += 1
# 結果出力
print(ans)

# -*- coding: utf-8 -*-
# モジュールのインポート
import itertools


def get_input() -> tuple:
    """
    標準入力を取得する.
    Returns:\n
        tuple: 標準入力
    """
    N = int(eval(input()))
    L = list(map(int, input().split()))
    return N, L


def main(L: list) -> None:
    """
    メイン処理.
    Args:\n
        L (list): 棒の長さ
    """
    # 求解処理
    ans = 0
    for L_i, L_j, L_k in itertools.combinations(L, 3):
        if (L_i == L_j) or (L_j == L_k) or (L_k == L_i):
            continue
        if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k):
            ans += 1
    # 結果出力
    print(ans)


if __name__ == "__main__":
    # 標準入力を取得
    N, L = get_input()
    # メイン処理
    main(L)

-# 標準入力を取得 -N = int(eval(input())) -L = list(map(int, input().split())) -# 求解処理 -ans = 0 -for L_i, L_j, L_k in itertools.combinations(L, 3): -    if (L_i == L_j) or (L_j == L_k) or (L_k == L_i): -        continue -    if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k): -        ans += 1 -# 結果出力 -print(ans) + +def get_input() -> tuple: +    """ +    標準入力を取得する. +    Returns:\n +        tuple: 標準入力 +    """ +    N = int(eval(input())) +    L = list(map(int, input().split())) +    return N, L + + +def main(L: list) -> None: +    """ +    メイン処理. +    Args:\n +        L (list): 棒の長さ +    """ +    # 求解処理 +    ans = 0 +    for L_i, L_j, L_k in itertools.combinations(L, 3): +        if (L_i == L_j) or (L_j == L_k) or (L_k == L_i): +            continue +        if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k): +            ans += 1 +    # 結果出力 +    print(ans) + + +if __name__ == "__main__": +    # 標準入力を取得 +    N, L = get_input() +    # メイン処理 +    main(L)