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