#include <bits/stdc++.h>
using namespace std;
using namespace std;
int32_t main() {
  long long n, a, b, k;
  cin >> n >> a >> b >> k;
  string s;
  cin >> s;
  vector<long long> indRight;
  vector<long long> indLeft;
  long long cntr = 0;
  long long shipCount = 0;
  long long leftStartIndex = -1;
  long long rightStartIndex = -1;
  for (long long i = 0; i < n; i++) {
    if (s[i] == '1') {
      cntr = 0;
      continue;
    }
    cntr += 1;
    if (cntr == b) {
      cntr = 0;
      shipCount += 1;
      if (shipCount == a) {
        leftStartIndex = i - b + 1;
        break;
      }
    }
  }
  cntr = 0;
  for (long long i = n - 1; i >= 0; i--) {
    if (s[i] == '1') {
      if (i <= leftStartIndex || (i - leftStartIndex + 1) <= b) break;
      cntr = 0;
      continue;
    }
    cntr += 1;
    if (cntr == b) {
      indLeft.push_back(i);
      cntr = 0;
      if (i <= leftStartIndex || (i - leftStartIndex + 1) <= b) break;
    }
  }
  cntr = 0;
  shipCount = 0;
  for (long long i = n - 1; i >= 0; i--) {
    if (s[i] == '1') {
      cntr = 0;
      continue;
    }
    cntr += 1;
    if (cntr == b) {
      cntr = 0;
      shipCount += 1;
      if (shipCount == a) {
        rightStartIndex = i + b;
        break;
      }
    }
  }
  cntr = 0;
  for (long long i = 0; i < n; i++) {
    if (s[i] == '1') {
      if (i >= rightStartIndex || (rightStartIndex - i + 1) <= b) break;
      cntr = 0;
      continue;
    }
    cntr += 1;
    if (cntr == b) {
      indRight.push_back(i);
      cntr = 0;
      if (i >= rightStartIndex || (rightStartIndex - i + 1) <= b) break;
    }
  }
  if (indLeft.size() <= indRight.size()) {
    cout << indLeft.size() << endl;
    for (auto node : indLeft) cout << node + 1 << " ";
  } else {
    cout << indRight.size() << endl;
    for (auto node : indRight) cout << node + 1 << " ";
  }
}
