import Control.Monad
import Data.Maybe
import qualified Data.ByteString.Char8 as BS
import Data.List

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine

main = do
    [n, k, c] <- getIntList
    s <- f . zip [1..] <$> getLine
    let ansf = take k $ solvef c s
    let ansb = reverse . take k $ solveb c (reverse s)
    mapM_ print (check ansf ansb)


f :: [(Int, Char)] -> [Int]
f [] = []
f ((i, b) : xs) | b == 'o' = i : f xs
                | otherwise = f xs

solvef :: Int -> [Int] -> [Int]
solvef _ [] = []
solvef c (x : xs) = x : solvef c (dropWhile (x + c >= ) xs)

solveb :: Int -> [Int] -> [Int]
solveb _ [] = []
solveb c (x : xs) = x : solveb c (dropWhile (x - c <= ) xs)

check :: [Int] -> [Int] -> [Int]
check [] _ = []
check _ [] = []
check (x : xs) (y : ys) | x == y = x : check xs ys
                        | otherwise = check xs ys