# coding: utf-8 #yuki_118 def fact(n): if n == 0: return 1 elif n>0: return n*fact(n-1) def r_outof_n(r,n): return fact(n)/(fact(r)*fact(n-r)) n=int(raw_input()) list=map(int,raw_input().split()) t=[(x, list.count(x)) for x in set(list)] lt=len(t) mul=1 for i in xrange(len(t)): mul=(mul*t[i][1])%(10**9+7) rofn=r_outof_n(3,lt) rofn=rofn%(10**9+7) print (mul*rofn)%(10**9+7)