import Control.Monad import Data.List import Data.Tuple import Debug.Trace sndSort a b | snd a < snd b = LT | otherwise = GT oddLine :: (Ord a) => [a] -> [a] oddLine [] = [] oddLine (x:[]) = [x] oddLine (x:xs) = x : (oddLine $ tail xs) evenLine :: (Ord a) => [a] -> [a] evenLine [] = [] evenLine (_:[]) = [] evenLine (_:[x]) = [x] evenLine (_:x:xs) = x : (evenLine xs) searchKadomatsu _ [] = 0 searchKadomatsu _ (a:[]) = 0 searchKadomatsu _ (a:b:[]) = 0 searchKadomatsu n (a:b:c:l) | n < 3 = 0 -- そもそも竹が3本ない | otherwise = searchKadomatsu (n-3) l' + 1 where abc = filter (>0) [a - 1, b - 1, c - 1] l' | length abc == 0 = l | otherwise = abc ++ l kadomatsu _ [] _ = [] kadomatsu _ _ [] = [] kadomatsu 0 _ _ = [] kadomatsu t (n:ns) (l:ls) = searchKadomatsu n l : kadomatsu (t-1) ns ls kadomatsuList [] = [] kadomatsuList ls = c : kadomatsuList ls' where c = length $ filter (== head ls) ls ls' = drop c ls main = do t <- readLn str <- replicateM (t * 2) getLine let xs = map (map read . words) str :: [[Int]] n = [x !! 0 | x <- oddLine xs] l = [reverse $ sort $ kadomatsuList x | x <- evenLine xs] mapM_ print $ kadomatsu t n l