import Control.Applicative import Control.Monad import Data.Monoid import Data.Maybe import Data.List import Data.Bool import qualified Data.Set as S import qualified Data.Map as M