Problem:
Score : 500 points

Problem Statement

Takahashi has decided to work on K days of his choice from the N days starting with tomorrow.

You are given an integer C and a string S. Takahashi will choose his workdays as follows:

After working for a day, he will refrain from working on the subsequent C days.

If the i-th character of S is x, he will not work on Day i, where Day 1 is tomorrow, Day 2 is the day after tomorrow, and so on.

Find all days on which Takahashi is bound to work.

Constraints

1 \leq N \leq 2 \times 10^5

1 \leq K \leq N

0 \leq C \leq N

The length of S is N.

Each character of S is o or x.

Takahashi can choose his workdays so that the conditions in Problem Statement are satisfied.

Input

Input is given from Standard Input in the following format:

N K C
S

Output

Print all days on which Takahashi is bound to work in ascending order, one per line.

Sample Input 1

11 3 2
ooxxxoxxxoo

Sample Output 1

6

Takahashi is going to work on 3 days out of the 11 days. After working for a day, he will refrain from working on the subsequent 2 days.

There are four possible choices for his workdays: Day 1,6,10, Day 1,6,11, Day 2,6,10, and Day 2,6,11.

Thus, he is bound to work on Day 6.

Sample Input 2

5 2 3
ooxoo

Sample Output 2

1
5

There is only one possible choice for his workdays: Day 1,5.

Sample Input 3

5 1 0
ooooo

Sample Output 3

There may be no days on which he is bound to work.

Sample Input 4

16 4 3
ooxxoxoxxxoxoxxo

Sample Output 4

11
16

Solution in Julia (0.5.0) (judge verdict: Wrong Answer)

parseInt(x) = parse(Int, x)
parseMap(x::Array{SubString{String},1}) = map(parseInt, x)
function bsearch(a,x);l,r=0,length(a)+1;while r-l>1;m=(r+l)>>1;if a[m]<x;l=m;else;r=m;end;end;l;end

function main()
	n,k,c = readline() |> split |> parseMap
	s = readline() |> chomp
	a = zeros(Int,n)
	a[1] = s[1]=='o'?1:0
	for i in 2:n
		a[i]=s[i]=='o'?a[i-1]+1:a[i-1]
	end
	b = zeros(Int,n)
	bt = zeros(Int,n)
	for i in 1:n
		if i+c>n
			b[i] = n+1
		else
			b[i] = bsearch(a,a[i+c]+1)+1
		end
		if i-c<=1
			bt[i] = 0
		else
			bt[i] = bsearch(a,a[i-c-1])+1
		end
	end
	d = zeros(Int,n)
	chk = zeros(Int,n)
	e = Int[]
	for i in 1:n
		if s[i]=='o'
			if 1+c>=i
				d[i] = 1
			else
				d[i]=d[i-c-1]+1
			end
		elseif i>1
			d[i] = d[i-1]
		end
	end
	if d[n]==k
		for i in 1:n
			if s[i]=='o'
				f = 0
				l = bt[i]
				r = b[i]
				if l==0&&r==n+1
					if d[i]==k
						push!(e,i)
					end
				elseif l==0
					if d[r]==d[i]+1
						push!(e,i)
					end
				elseif r==n+1
					if d[l]+1==d[i]&&d[i]==k
						push!(e,i)
					end
				else
					if d[l]+2==d[i]+1==d[r]
						push!(e,i)
					end
				end
			end
		end
	end
	m = length(e)
	if m==1
		println(e[1])
	else
		for i in 1:m
			if i==1
				if d[e[i]]+1==d[e[i+1]]
					println(e[1])
				end
			elseif i==m
				if d[e[m-1]]+1==d[e[m]]
					println(e[m])
				end
			elseif d[e[i-1]]+1==d[e[i]]==d[e[i+1]]-1
				println(e[i])
			end
		end
	end
end

main()