#include <bits/stdc++.h>
using namespace std;
struct Node {
  int a, l, r;
  Node(int aa, int ll, int rr) {
    a = aa;
    l = ll;
    r = rr;
  }
  bool operator<(const Node& other) const {
    if (a == other.a) {
      if (l == other.l)
        return r < other.r;
      else
        return l < other.r;
    } else
      return a < other.a;
  }
};
int main() {
  cout.sync_with_stdio(false);
  cin.tie(NULL);
  int n, a, b, k;
  cin >> n >> a >> b >> k;
  string s;
  cin >> s;
  multiset<Node> ms;
  int pos = 0, valid = 0;
  while (pos < n) {
    if (s[pos] == '1') {
      pos++;
      continue;
    }
    int aux = 1;
    while (pos + 1 < n && s[pos + 1] == '0') pos++, aux++;
    pos++;
    if (aux >= b) {
      valid += (aux / b);
      ms.insert(Node(aux, pos - aux, pos - 1));
    }
  }
  vector<int> res;
  while (!ms.empty() && valid >= a) {
    Node p = *(ms.rbegin());
    ms.erase(p);
    valid--;
    int l = p.l + b, r = p.r, len = r - l + 1;
    res.push_back(l - 1);
    if (len >= b) {
      ms.insert(Node(len, l, r));
    }
  }
  cout << res.size() << endl;
  sort(res.begin(), res.end());
  for (int val : res) cout << val + 1 << " ";
  cout << endl;
  return 0;
}
