import Data.List dice_p :: Integer -> [Integer] dice_p 0 = [1] dice_p p = concat [ map (d*) (dice_p (p-1)) | d<-[2,3,5,7,11,13] ] dice_c :: Integer -> [Integer] dice_c 0 = [1] dice_c p = concat [ map (d*) (dice_c (p-1)) | d<-[4,6,8,9,10,12] ] main = do [p, c] <- getLine >>= return . map (read::String->Integer) . words let ps = map (\xs -> (head xs,(fromIntegral(length xs)))) (group (sort (dice_p p))) let cs = map (\xs -> (head xs,(fromIntegral(length xs)))) (group (sort (dice_c c))) print $ (\x -> (fromIntegral x) / (6^(p+c))) $ sum $ [ (\(p1, p2) (c1, c2) -> (p1*c1*p2*c2) ) p' c' | p' <- ps, c' <- cs ]