import sys



sr = lambda: sys.stdin.readline().rstrip()

ir = lambda: int(sr())

lr = lambda: list(map(int, sr().split()))



# 前からと後ろからでgreedyにcandに入れて両方の一致したところ

N, K, C = lr()

S = sr()



def choose(S):

    cand = []

    count = 0

    cur = 0

    while cur < len(S):

        if S[cur] == 'o':

            count += 1

            cand.append(cur)

            cur += C+1            

        else:

            cur += 1

        if count >= K:

            break

    return cand



cand1 = choose(S)

cand2 = choose(S[::-1])[::-1]

cand2 = [N-1-x for x in cand2]



for x, y in zip(cand1, cand2):

    if x == y:

        print((x+1))

# coding: utf-8

import sys



sr = lambda: sys.stdin.readline().rstrip()

ir = lambda: int(sr())

lr = lambda: list(map(int, sr().split()))



N, K, C = lr()

S = sr()

# 左からと右からでそれぞれ貪欲、重なったところが必須

left = []; right = []



def work(S):

    ret = []

    cur = 0

    count = 0

    while count < K:

        if S[cur] == 'o':

            count += 1

            ret.append(cur)

            cur += C + 1

        else:

            cur += 1

    return ret



left = work(S)

right = work(S[::-1])

right = [N-1-x for x in right]

right.reverse()

answer = []

for l, r in zip(left, right):

    if l == r:

        answer.append(str(l+1))

print(('\n'.join(answer)))

import sys

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))
# 前からと後ろからでgreedyにcandに入れて両方の一致したところ
N, K, C = lr()
S = sr()


def choose(S):
    cand = []
    count = 0
    cur = 0
    while cur < len(S):
        if S[cur] == "o":
            count += 1
            cand.append(cur)
            cur += C + 1
        else:
            cur += 1
        if count >= K:
            break
    return cand


cand1 = choose(S)
cand2 = choose(S[::-1])[::-1]
cand2 = [N - 1 - x for x in cand2]
for x, y in zip(cand1, cand2):
    if x == y:
        print((x + 1))

# coding: utf-8
import sys

sr = lambda: sys.stdin.readline().rstrip()
ir = lambda: int(sr())
lr = lambda: list(map(int, sr().split()))
N, K, C = lr()
S = sr()
# 左からと右からでそれぞれ貪欲、重なったところが必須
left = []
right = []


def work(S):
    ret = []
    cur = 0
    count = 0
    while count < K:
        if S[cur] == "o":
            count += 1
            ret.append(cur)
            cur += C + 1
        else:
            cur += 1
    return ret


left = work(S)
right = work(S[::-1])
right = [N - 1 - x for x in right]
right.reverse()
answer = []
for l, r in zip(left, right):
    if l == r:
        answer.append(str(l + 1))
print(("\n".join(answer)))

+# coding: utf-8 -# 前からと後ろからでgreedyにcandに入れて両方の一致したところ +# 左からと右からでそれぞれ貪欲、重なったところが必須 +left = [] +right = [] -def choose(S): -    cand = [] +def work(S): +    ret = [] +    cur = 0 -    cur = 0 -    while cur < len(S): +    while count < K: -            cand.append(cur) +            ret.append(cur) -        if count >= K: -            break -    return cand +    return ret -cand1 = choose(S) -cand2 = choose(S[::-1])[::-1] -cand2 = [N - 1 - x for x in cand2] -for x, y in zip(cand1, cand2): -    if x == y: -        print((x + 1)) +left = work(S) +right = work(S[::-1]) +right = [N - 1 - x for x in right] +right.reverse() +answer = [] +for l, r in zip(left, right): +    if l == r: +        answer.append(str(l + 1)) +print(("\n".join(answer)))