import Control.Monad (forM_, replicateM) import Data.List (sortOn) import Data.Ord (Down (..)) import Data.Ratio ((%)) main :: IO () main = do n <- readLn x <- replicateM n $ do [a, b] <- map read . words <$> getLine return (a, b) forM_ (solve x) $ \ (a, b) -> putStrLn . unwords . map show $ [a, b] solve :: Integral a => [(a, a)] -> [(a, a)] solve = sortOn (Down . uncurry (%))