#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 50;
int n, m, k;
int a[N], s[3][N];
struct node {
int l, r;
node() {}
node(int L, int R) {l = L, r = R;}
} _[2][N];
int cnt[2];
int main() {
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
int ans = 0;
for (int i = 1; i <= n; i++) s[a[i]][i] = s[a[i]][i - 1] + 1;
int L = 1;
a[n + 1] = 1 << 30;
for (int i = 1; i <= n; i++) {
if (a[i] != a[i + 1])
_[a[i]][++cnt[a[i]]] = node(L, i), L = i + 1;
}
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= cnt[i]; j++) {
int l = 0, r = j;
while (l + 1 < r) {
int mid = (l + r) / 2;
if ((s[a[i] ^ 3][_[a[i]][j].r] - s[a[i] ^ 3][_[a[i]][mid].l - 1]) <= k) r = mid;
else l = mid;
}
ans = max(ans, s[a[i]][_[a[i]][j].r] - s[a[i]][_[a[i]][r].l - 1]);
cout << i << " " << j << " " << s[a[i]][_[a[i]][j].r] - s[a[i]][_[a[i]][r].l - 1] << endl;
}
}
printf("%d", ans);
return 0;
}