import Data.List q = 10^9+7 comb n r = iterate (scanl1 (\x y -> mod (x+y) q)) [1,1..] !! (n'-r') !! r' where [n',r'] = map fromIntegral [n,r] main = getContents >>= print . kadomatsu . map read . words kadomatsu (n:as) = mod (comb n 3) q - mod dup q where dup = sum $ map comb' $ filter (>1) $ map length $ group $ sort as comb' m | m==2 = n - m | otherwise = mod (comb m 2 * (n-m) + comb m 3) q