#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const long long LINF = 1e18;
const double FINF = 1e15;
const double EPS = 1e-9;
const double PI = 2.0 * acos(0.0);
struct Event {
  int l, r, gain;
  Event(int _l, int _r, int _gain) : l(_l), r(_r), gain(_gain) {}
  bool operator<(const Event& rhs) const {
    if (gain != rhs.gain) return gain < rhs.gain;
    return l < rhs.l;
  }
};
int n, a, b, k;
char s[200005];
int calc_gain(int l, int r) {
  int cur = (r - l + 1) / b;
  int m = r - b + 1;
  if (m - 1 >= l && m - l >= b) {
    cur -= (m - l) / b;
  }
  return cur;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> a >> b >> k >> s;
  vector<int> ans;
  priority_queue<Event> pq;
  int cnt = 0;
  int gcnt = 0;
  for (int i = 0; i <= n; ++i) {
    if (i == n || s[i] == '1') {
      if (cnt >= b) {
        gcnt += cnt / b;
        int r = i - 1;
        int l = i - cnt;
        pq.emplace(l, r, calc_gain(l, r));
      }
      cnt = 0;
    } else if (s[i] == '0') {
      ++cnt;
    }
  }
  while (gcnt >= a) {
    Event t = pq.top();
    pq.pop();
    int m = (t.r - b + 1);
    ans.push_back((m));
    gcnt -= t.gain;
    if (m - 1 >= t.l && m - t.l >= b) {
      pq.emplace(t.l, m - 1, calc_gain(t.l, m - 1));
    }
  }
  sort(ans.begin(), ans.end());
  cout << ans.size() << '\n';
  for (int i = 0; i < ans.size(); ++i) {
    cout << ans[i] + 1 << ' ';
  }
  cout << '\n';
}
