๋๋๊ณ ํ๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ์๋ ค์ฃผ๋ ๊ตฌํ ๋ฌธ์
sumW
์ ๋ํด์ฃผ๊ณ , ํธ๋ญ์ด ๋ค๋ฆฌ์์ ๋ด๋ ค๊ฐ๋ฉด ๋นผ์ฃผ๊ฒ ๋๋ค. sumW
์์ ๊ฐ์ ๋นผ์ฃผ๋ฉด์ ํ์์ ์ ๊ฑฐ๋๋ ๊ณผ์ ์ ๋งค๋ฒ ์ผ์ด๋๊ฒ ๋๋ค# ํธ๋ญ
n, w, L = map(int, input().split())
truck = list(map(int, input().split()))
def move():
queue = [0] * w
sumW = time = next = 0
while True:
time += 1
# ๋ค๋ฆฌ ๊ฐ์ฅ ์์ ์๋ ํธ๋ญ์ ๋ด๋ฆฌ๋ฉฐ ๋์์ ๋ค๋ฆฌ ์ ๋ฌด๊ฒ ์ดํฉ(sumW)์์ ์ ๊ฑฐ
# ํธ๋ญ์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฅ 0์ด ์ ๊ฑฐ๋๋ค
sumW -= queue.pop(0)
# ๋ค์ ํธ๋ญ์ด ์กด์ฌํ๋ค๋ฉด sumW์ ๋ค์ ํธ๋ญ์ด ์ฌ๋ผ์ฌ ์ ์๋์ง ํ๋จ
# ์ฌ๋ผ์ฌ ์ ์๋ค๋ฉด ๋ฌด๊ฒ๋ฅผ ๋ํด์ฃผ๊ณ , ํธ๋ญ์ ๋ค๋ฆฌ์ ์ฌ๋ฆฐ๋ค
# ์ด์ ๋ค๋ฆฌ์ ์ฌ๋ผ์ค์ง ์์ ๋ค์ ํธ๋ญ์ผ๋ก next๋ ์ฎ๊ฒจ๊ฐ๋ค
if next < n and sumW + (trc:=truck[next]) <= L:
sumW += trc
queue.append(trc)
next += 1
# ๋ง์ฝ ์ ๋๋ค๋ฉด, ์๋ฌด๊ฒ๋ ์ฌ๋ฆฌ์ง ์๋๋ค(0)
else:
queue.append(0)
# ๋ค๋ฆฌ ์์ ์๋ฌด ํธ๋ญ๋ ์ฌ๋ผ์ ์์ง ์๊ณ ๋ ์ฌ๋ผ์ฌ ํธ๋ญ๋ ์๋ค๋ฉด ์ข
๋ฃํ๋ค
if not sumW and next == n:
return time
print(move())