1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/python3

import sys


class RangeSum:

  def __init__(self, nums):
    self._pref_sums = [0]
    s = 0
    for num in nums:
      s += num
      self._pref_sums.append(s)

  def sum(self, start=0, stop=-1):
    return self._pref_sums[stop] - self._pref_sums[start]


def solve():
  kOffice = '1'
  kRemote = '2'

  n, k, t = sys.stdin.readline().split()
  agenda = sys.stdin.readline()

  # print(n, k, t)
  # print(agenda)

  n, k, t = int(n), int(k), int(t)
  office = RangeSum([1 if a == kOffice else 0 for a in agenda])
  remote = RangeSum([1 if a == kRemote else 0 for a in agenda])

  ans = -1

  # Case 1: Stay at home.
  if office.sum(0, n) <= k:
    ans = n - max(0, remote.sum(0, n) - (k - office.sum(0, n)))
    # print('case1:', ans)

  # Case 2: Go to the office.
  for i in range(n - 2 * t + 1):
    missed_morning = office.sum(0, i + t) + remote.sum(i, i + t)
    if missed_morning > k: continue
    for j in range(i + t, n - t + 1):
      missed_afternoon = office.sum(j, n) + remote.sum(j, j + t)
      missed = missed_morning + missed_afternoon
      if missed > k: continue
      maybe = remote.sum(0, i) + remote.sum(j + t, n)
      ans = max(ans, i + (n - j - t) - max(0, maybe - (k - missed)))
      # print('case2:', i, j, ans)

  print(ans)


if __name__ == "__main__":
  solve()