-- Jonathan Frech, 2022-08-02, 2022-08-06

{-# LANGUAGE FlexibleInstances #-}

instance {-# OVERLAPS #-} Show (Int,Int,Int) where
    show (_,0,0) = "fizzbuzz"
    show (_,_,0) = "buzz"
    show (_,0,_) = "fizz"
    show (n,_,_) = show n

main = mapM_ (print . \n -> (n, n `mod` 3, n `mod` 5)) ([1..100] :: [Int])
