import Control.Monad import Data.List main = do n <- readLn ss <- replicateM n getLine [m,x,d] <- map read . words <$> getLine print $ lcp n m x d ss lcp n m x d ss = sum $ map lcp' (seed n m x d) where lcp' (i,j) = length $ takeWhile id $ zipWith (==) (ss!!(i-1)) (ss!!(j-1)) seed n m x d = reverse $ snd $ foldl makeq (x,[]) [1..m] where makeq (x', acc) k = ((x' + d) `mod` (n * (n - 1)), (i',j'):acc) where i = (x' `div` (n - 1)) + 1 j = (x' `mod` (n - 1)) + 1 [i',j'] = if i>j then [j,i] else [i,j+1]