#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n,a,b,k,na=0;
	scanf("%d %d %d %d",&n,&a,&b,&k);
	int hold=0;
	char ans[200001];
	for(int i=0;i<n;i++)
	{
		char tmp;
		scanf(" %c",&tmp);
		if(tmp=='0'){
			hold++;
			if(hold==b){
				ans[i]=1;
				hold=0;
				na++;
			}
		}
		else
			hold=0;
	}
	na=na-a+1;
	cout<<na<<endl;

	for(int i=0;na;i++)
	{
		if(ans[i]==1)
		{
			cout<<i+1<<" ";
			na--;
		}

	}
	cout<<endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int n,a,b,k;

int main()
{
	string ss;
	scanf("%d %d %d %d",&n,&a,&b,&k);
	int hold=0;
	char ans[200001],na=0;;
	for(int i=0;i<n;i++)
	{
		scanf(" %c",&ss[i]);
		if(ss[i]=='0'){
			hold++;
			if(hold==b){
				ans[i]=1;
				hold=0;
				na++;
			}
		}
		else
			hold=0;
	}
	cout<<na-a+1<<endl;
	for(int i=0;i<n;i++)
	{
		if(a==1 && ans[i]==1)
		{
			cout<<i+1<<" ";
		}
		else if(a!=1 && ans[i]==1)
			a--;
	}
	cout<<endl;
	return 0;
}


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5+10;
int main()
{
    int n;
    scanf("%d", &n);
    char str[N];
    int vis = 0, local[N], lo = 0, num = 0, ans;
    int a, b, k;
    scanf("%d%d%d", &a, &b, &k);
    scanf("%s", str+1);
    for (int i = 1; i <= n; i++)
    {
        if (str[i] == '0')
        {
            vis++;
            if (vis == b)
            {
                num++;
                local[num] = i;
                vis = 0;
            }
        }
        else
        {
            vis = 0;
        }
    }
    /*for (int i = 0; i <= lo ;i++)
    {
        printf("%d ", vis[i]);
    }*/
    //printf("%d\n", num);
    ans = num - a + 1;
    printf("%d\n", ans);
    for (int i = 1; i <= ans; i++)
    {
        printf("%d ", local[i]);
    }
    putchar('\n');

    return 0;
}


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5+10;
int main()
{
    int n;
    scanf("%d", &n);
    char str[N];
    int vis[N], local[N], lo = 0, num = 0, ans;
    memset(vis, 0, sizeof(vis));
    int a, b, k;
    scanf("%d%d%d", &a, &b, &k);
    scanf("%s", str+1);
    for (int i = 1; i <= n; i++)
    {
        if (str[i] == '0')
        {
            vis[lo]++;
            if (vis[lo] == b)
            {
                num++;
                local[num] = i;
                vis[lo++];
            }
        }
        else
        {
            vis[lo] = 0;
            lo++;
        }
    }
    /*for (int i = 0; i <= lo ;i++)
    {
        printf("%d ", vis[i]);
    }*/
    //printf("%d\n", num);
    ans = num - a + 1;
    printf("%d\n", ans);
    for (int i = 1; i <= ans; i++)
    {
        printf("%d ", local[i]);
    }
    putchar('\n');

    return 0;
}


#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int N = 2*1e5+10;
char str[N];
int local[N];

int main()
{
	int n,a,b,k;
	while(scanf("%d%d%d%d", &n, &a, &b, &k) != EOF)
	{
		scanf("%s", str+1);
		int num = 0, vis = 0;
		for(int i = 1; i <= n; ++i)
		{
			if(str[i] == '0')
			{
				vis++;
				if(vis == b)
				{
					local[num++] = i;
					vis = 0;
				}
			}
			if(str[i] == '1')
				vis = 0;
		}
		/*for (int i = 0; i <= lo ;i++)
        {
            printf("%d ", vis[i]);
        }*/
        //printf("%d\n", num);
		printf("%d\n", num + 1 - a);
		printf("%d", local[0]);
		for(int i = 1; i <= num - a; ++i)
        {
            printf(" %d", local[i]);
		}
		printf("\n");
	}
	return 0;
}


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5+10;
int main()
{
    int n;
    scanf("%d", &n);
    char str[N];
    int vis = 0, local[N], lo = 0, num = 0, ans;
    int a, b, k;
    scanf("%d%d%d", &a, &b, &k);
    scanf("%s", str+1);
    for (int i = 1; i <= n; i++)
    {
        if (str[i] == '0')
        {
            vis++;
            if (vis == b)
            {
                local[num++] = i;
                vis = 0;
            }
        }
        else
        {
            vis = 0;
        }
    }
    /*for (int i = 0; i <= lo ;i++)
    {
        printf("%d ", vis[i]);
    }*/
    //printf("%d\n", num);
    ans = num - a + 1;
    printf("%d\n", ans);
    printf("%d", local[0]);
    for (int i = 1; i <= ans - 1; ++i)
    {
        printf(" %d", local[i]);
    }
    putchar('\n');

    return 0;
}


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5+10;
char str[N];
int local[N];

int main()
{
    int n;
    scanf("%d", &n);
    int vis = 0, num = 0, ans;
    int a, b, k;
    scanf("%d%d%d", &a, &b, &k);
    scanf("%s", str+1);
    for (int i = 1; i <= n; ++i)
    {
        if (str[i] == '0')
        {
            vis++;
            if (vis == b)
            {
                local[num++] = i;
                vis = 0;
            }
        }
        else
        {
            vis = 0;
        }
    }
    /*for (int i = 0; i <= lo ;i++)
    {
        printf("%d ", vis[i]);
    }*/
    //printf("%d\n", num);
    ans = num - a + 1;
    printf("%d\n", ans);
    printf("%d", local[0]);
    for (int i = 1; i <= ans - 1; ++i)
    {
        printf(" %d", local[i]);
    }
    putchar('\n');

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

bool check(string s,int a,int n,char c){
    for (int i=a;i<a+n;i++)
        if (s[i]!=c)return 0;
    return 1;
}

int main(){
    int arr[20000];
    int n,a,b,k;
    cin>>n>>a>>b>>k;
    string s;
    cin>>s;
    s='1'+s+'1';
    int ans=0;
    int t=-1;
    /*while(a!=0){
        if (t+b-1>s.size()){cout<<0<<endl;return 0;}
        if (check(s,t,b,'0')){
            for (int i=t;i<t+b;i++)s[i]='1';
            t+=b;
            a--;
        }
        else t++;
    }*/
    int o=0;
    for (int i=1;i<s.size()&&a!=0;i++){
        if (s[i]=='0')o++;else o=0;
        if (o==b){
            for (int j=i;j>i-b;j--)
                s[j]='1';
            a--;
            t=i;
            o=0;
        }
    }
//    cout<<s<<endl;
    for (int i=0;i<s.size();){
        if (s[i]=='1'){
            for (int j=i;j<i+b&&j<s.size();j++)s[j]='1';
            for (int j=i;j>i-b&&j>=0;j--)s[j]='1';
            i=i+b;
        }
        else i++;
    }
//    cout<<s<<endl;
    for(int i=0;i<s.size();i++)
        if (s[i]=='0'){arr[ans]=i;ans++;}
    /*for (int i=0;i<s.size()-b;i++){
        if (check(s,i+1,b-1,'0')&&s[i+b]!='1'){s[i+b]='1';arr[ans]=i+b;ans++;}
    }*/

    if (t==-1){cout<<0<<endl;return 0;}
    cout<<ans+1<<endl;
    for (int i=0;i<ans;i++)cout<<arr[i]<<' ';
    cout<<t<<endl;
}


#include<bits/stdc++.h>
using namespace std;

bool check(string s,int a,int n,char c){
    for (int i=a;i<a+n;i++)
        if (s[i]!=c)return 0;
    return 1;
}

int main(){
    int arr[20000];
    int n,a,b,k;
    cin>>n>>a>>b>>k;
    string s;
    cin>>s;
    s='1'+s+'1';
    int ans=0;
    int t=-1;
    /*while(a!=0){
        if (t+b-1>s.size()){cout<<0<<endl;return 0;}
        if (check(s,t,b,'0')){
            for (int i=t;i<t+b;i++)s[i]='1';
            t+=b;
            a--;
        }
        else t++;
    }*/
    int o=0;
    for (int i=1;i<s.size()&&a!=0;i++){
        if (s[i]=='0')o++;else o=0;
        if (o==b){
            for (int j=i;j>i-b;j--)
                s[j]='1';
            a--;
            t=i;
            o=0;
        }
    }
    for (int i=0;i<s.size()-b;i++){
        if (check(s,i+1,b-1,'0')&&s[i+b]!='1'){s[i+b]='1';arr[ans]=i+b;ans++;}
    }
    if (t==-1){cout<<0<<endl;return 0;}
    cout<<ans+1<<endl;
    for (int i=0;i<ans;i++)cout<<arr[i]<<' ';
    cout<<t<<endl;
}


#include<bits/stdc++.h>
using namespace std;

bool check(string s,int a,int n,char c){
    for (int i=a;i<a+n;i++)
        if (s[i]!=c)return 0;
    return 1;
}

int main(){
    int arr[20000];
    int n,a,b,k;
    cin>>n>>a>>b>>k;
    string s;
    cin>>s;
    s='1'+s+'1';
    int ans=0;
    int t=1;
    while(a!=0){
        if (t+b-1>s.size()){cout<<0<<endl;return 0;}
        if (check(s,t,b,'0')){
            for (int i=t;i<t+b;i++)s[i]='1';
            t+=b;
            a--;
        }
        else t++;
    }
    for (int i=0;i<s.size()-b;i++){
        if (check(s,i+1,b-1,'0')&&s[i+b]!='1'){s[i+b]='1';arr[ans]=i+b;ans++;}
    }
    cout<<ans+1<<endl;
    for (int i=0;i<ans;i++)cout<<arr[i]<<' ';
    cout<<t-1<<endl;
}


#include<bits/stdc++.h>
using namespace std;

bool check(string s,int a,int n,char c){
    for (int i=a;i<a+n;i++)
        if (s[i]!=c)return 0;
    return 1;
}

int main(){
	freopen("1.txt","r",stdin);
    int arr[200010];
    int n,a,b,k;
    cin>>n>>a>>b>>k;
	int aa=a;
    string s;
    cin>>s;
	string st=s;
    s='1'+s+'1';
    int ans=0;
    int t=-1;
    /*while(a!=0){
        if (t+b-1>s.size()){cout<<0<<endl;return 0;}
        if (check(s,t,b,'0')){
            for (int i=t;i<t+b;i++)s[i]='1';
            t+=b;
            a--;
        }
        else t++;
    }*/
    int o=0;
    for (int i=1;i<s.size()&&a>0;i++){
        if (s[i]=='0')o++;else o=0;
        if (o==b){
            for (int j=i;j>i-b;j--)
                s[j]='1';
            a--;
            t=i;
            o=0;
        }
    }
//   cout<<s<<endl;

 /*   for (int i=0;i<s.size();){
        if (s[i]=='1'){
            for (int j=i;j<i+b&&j<s.size();j++)s[j]='1';
            for (int j=i;j>i-b&&j>=0;j--)s[j]='1';
            i=i+b;
        }
        else i++;
    }
    cout<<s<<endl;
    for(int i=0;i<s.size();i++)
        if (s[i]=='0'){arr[ans]=i;ans++;}*/
    o=0;
    for (int i=0;i<s.size()-1;i++){
        if(s[i]=='0')o++;else o=0;
        if(o==b-1&&s[i+1]!='1'){
            s[i+1]='1';
            arr[ans]=i+1;ans++;
        }
        if(s[i+1]=='1') o=0;
       // if (check(s,i+1,b-1,'0')&&s[i+b]!='1'){s[i+b]='1';arr[ans]=i+b;ans++;}
    }

    if (a>0){cout<<0<<endl;return 0;}
    cout<<ans+1<<endl;
    for (int i=0;i<ans;i++)cout<<arr[i]<<' ';
    cout<<t<<endl;

}


#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;

const int N=200000+5;

struct node{
	int u;
	int v;
	int num;
};

int n,a,b,k;
int cnt;//射击的个数
int tot;//有效区域的个数
int all;

int pos[N];
char str[N];
node edge[N];

vector<int>ans;

void Read(){
	cnt=0;
	scanf(" %s",str);
	int len=strlen(str);
	for(int i=0;i<len;i++){
		if(str[i]=='1'){
			pos[++cnt]=i+1;
		}
	}
}

void Calc(){
	tot=0;
	all=0;
	int tmp=pos[1]-1;
	if(tmp>=b){
        edge[++tot].u=1;
        edge[tot].v=tmp;
        edge[tot].num=tmp/b;
        all+=tmp/b;
	}
	for(int i=2;i<=cnt;i++){
		int tmp=pos[i]-pos[i-1]-1;
		if(tmp>=b){
            edge[++tot].u=pos[i-1]+1;
            edge[tot].v=pos[i]-1;
            edge[tot].num=tmp/b;
            all+=tmp/b;
		}
	}
	tmp=n-pos[cnt];
	if(tmp>=b){
		edge[++tot].u=pos[cnt]+1;
        edge[tot].v=n;
        edge[tot].num=tmp/b;
        all+=tmp/b;
	}
}

void Solve(){
	ans.clear();
	int flag=all-a+1;
	printf("%d\n",flag);
	int sum=0;
    for(int i=1;i<=tot;i++){
		if(sum==flag) break;
		int tmp=edge[i].u;
		for(int j=0;j<edge[i].num;j++){
			tmp+=(b-1);
			if(tmp>edge[i].v) tmp=edge[i].v;
			ans.push_back(tmp);
			sum++;
			if(sum==flag) break;
			tmp+=1;
		}
    }
}

void Print(){
	int len=(int)ans.size();
	for(int i=0;i<len;i++){
		if(i) printf(" ");
		printf("%d",ans[i]);
	}
	puts("");
}

int main(){
	while(~scanf("%d%d%d%d",&n,&a,&b,&k)){
        Read();
        Calc();
        Solve();
        Print();
	}
	return 0;
}


#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;

const int N=20000+5;

struct node{
	int u;
	int v;
	int num;
};

int n,a,b,k;
int cnt;//射击的个数
int tot;//有效区域的个数
int all;

int pos[N];
char str[N];
node edge[N];

vector<int>ans;

void Read(){
	cnt=0;
	scanf(" %s",str);
	int len=strlen(str);
	for(int i=0;i<len;i++){
		if(str[i]=='1'){
			pos[++cnt]=i+1;
		}
	}
}

void Calc(){
	tot=0;
	all=0;
	int tmp=pos[1]-1;
	if(tmp>=b){
        edge[++tot].u=1;
        edge[tot].v=tmp;
        edge[tot].num=tmp/b;
        all+=tmp/b;
	}
	for(int i=2;i<=cnt;i++){
		int tmp=pos[i]-pos[i-1]-1;
		if(tmp>=b){
            edge[++tot].u=pos[i-1]+1;
            edge[tot].v=pos[i]-1;
            edge[tot].num=tmp/b;
            all+=tmp/b;
		}
	}
	tmp=n-pos[cnt];
	if(tmp>=b){
		edge[++tot].u=pos[cnt]+1;
        edge[tot].v=n;
        edge[tot].num=tmp/b;
        all+=tmp/b;
	}
}

void Solve(){
	ans.clear();
	int flag=all-a+1;
	printf("%d\n",flag);
	int sum=0;
    for(int i=1;i<=tot;i++){
		if(sum==flag) break;
		int tmp=edge[i].u;
		for(int j=0;j<edge[i].num;j++){
			tmp+=(b-1);
			if(tmp>edge[i].v) tmp=edge[i].v;
			ans.push_back(tmp);
			sum++;
			if(sum==flag) break;
			tmp+=b;
		}
    }
}

void Print(){
	int len=(int)ans.size();
	for(int i=0;i<len;i++){
		if(i) printf(" ");
		printf("%d",ans[i]);
	}
	puts("");
}

int main(){
	while(~scanf("%d%d%d%d",&n,&a,&b,&k)){
        Read();
        Calc();
        Solve();
        Print();
	}
	return 0;
}


#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;

const int N=20000+5;

struct node{
	int u;
	int v;
	int num;
};

int n,a,b,k;
int cnt;//射击的个数
int tot;//有效区域的个数
int all;

int pos[N];
char str[N];
node edge[N];

vector<int>ans;

void Read(){
	cnt=0;
	scanf(" %s",str);
	int len=strlen(str);
	for(int i=0;i<len;i++){
		if(str[i]=='1'){
			pos[++cnt]=i+1;
		}
	}
}

void Calc(){
	tot=0;
	all=0;
	int tmp=pos[1]-1;
	if(tmp>=b){
        edge[++tot].u=1;
        edge[tot].v=tmp;
        edge[tot].num=tmp/b;
        all+=tmp/b;
	}
	for(int i=2;i<=cnt;i++){
		int tmp=pos[i]-pos[i-1]-1;
		if(tmp>=b){
            edge[++tot].u=pos[i-1]+1;
            edge[tot].v=pos[i]-1;
            edge[tot].num=tmp/b;
            all+=tmp/b;
		}
	}
	tmp=n-pos[cnt];
	if(tmp>=b){
		edge[++tot].u=pos[cnt]+1;
        edge[tot].v=n;
        edge[tot].num=tmp/b;
        all+=tmp/b;
	}
}

void Solve(){
	ans.clear();
	int flag=all-a+1;
	printf("%d\n",flag);
	int sum=0;
    for(int i=1;i<=tot;i++){
		if(sum==flag) break;
		int tmp=edge[i].u;
		for(int j=0;j<edge[i].num;j++){
			tmp+=(b-1);
			if(tmp>edge[i].v) tmp=edge[i].v;
			ans.push_back(tmp);
			sum++;
			if(sum==flag) break;
			tmp+=1;
		}
    }
}

void Print(){
	int len=(int)ans.size();
	for(int i=0;i<len;i++){
		if(i) printf(" ");
		printf("%d",ans[i]);
	}
	puts("");
}

int main(){
	while(~scanf("%d%d%d%d",&n,&a,&b,&k)){
        Read();
        Calc();
        Solve();
        Print();
	}
	return 0;
}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <map>
#include <set>
using namespace std;

const int N = 100003;

vector <int> graph[10007];

int mark[10007];
void bfs(int s)
{
	queue<int> q;
	mark[s] = 1;
	q.push(s);
	while (!q.empty())
	{
		int u = q.front();
		q.pop();
		for (int i = 0; i < graph[u].size(); i++)
		{
			int h = graph[u][i];
			if (mark[h] == 0)
			{
				mark[h] = mark[u] + 1;
				q.push(h);
			}
		}
	}
}
int reverse(int x)
{
	int rev = 0;
	while (x != 0)
	{
		rev = rev * 10;
		rev = rev + x % 10;
		x = x / 10;
	}
	return rev;
}

void parz(int n, int m)
{
	vector<char> prime(m + 1, true);
	prime[0] = prime[1] = false;
	for (int i = n; i <= m; ++i)
		if (prime[i])
			if (i * 1ll * i <= m)
				for (int j = i*i; j <= m; j += i)
					prime[j] = false;

	for (int j = n; j <= m; j++)
	{
		if (prime[j] == true)
		{
			cout << j << endl;
		}
	}
	for (int j = n; j <= m; j++)
	{
		prime[j] = false;
	}

}
long long isp(long long n)

{

	if (n <= 1) return 0;

	if (n == 2) return 1;

	if (n % 2 == 0) return 0;

	for (long long i = 3; i*i <= n; i += 2)

		if (n%i == 0)

			return 0;

	return 1;

}
int tvan[10001];
struct on
{
	int x, y;
};
int poqraguyn(int a[], int n)
{
	int i, mn = 10000007,mni=0;
	for (i = 0; i < n; i++)
	{
		if (a[i] < mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
int mecaguyn(int a[], int n)
{
	int i, mn = 0, mni = 0;
	for (i = 0; i < n; i++)
	{
		if (a[i] > mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
bool row[100007];
	 bool col[100007];
int main()
{
	//freopen("bparty.in", "r", stdin);
	//freopen("bparty.out", "w", stdout);

	bool st[107];

	long long t = 0,  j; long long k = 0, mx = 0, mxi = 0, mxi1 = 0,mn=0;
	bool o = true;
	long long   c = 0, it;
	long long i = 0;
	int i1 = 0, i2;
	char s1[1007], s2[1007];
	int N;
	int jj = 0;
	string s;
	int n;

	map <int, int> mp;
	int m, x, y;
	set <char> myset;
	int a, b;
	int uru[100001];
	k = 0;
	j = 0;
	int ans = 1;
	cin >> n >> a >> b >> k;
	cin >> s;
	c = s.length();
	for (i = 0; i < c; i++)
	{
		if (s[i] == '0')
		{
			k++;
			if (k%b == 0)
			{ans++;
				uru[j] = i + 1;
				j++;

			}

		}else
			{
				k = 0;
			}
	}
	ans = ans - a;
	cout << ans<<endl;
	for (i = 0; i < ans; i++)
	{
		cout << uru[i] << " ";
	}

	return 0;

}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <map>
#include <set>
using namespace std;

const int N = 100003;

vector <int> graph[10007];

int mark[10007];
void bfs(int s)
{
	queue<int> q;
	mark[s] = 1;
	q.push(s);
	while (!q.empty())
	{
		int u = q.front();
		q.pop();
		for (int i = 0; i < graph[u].size(); i++)
		{
			int h = graph[u][i];
			if (mark[h] == 0)
			{
				mark[h] = mark[u] + 1;
				q.push(h);
			}
		}
	}
}
int reverse(int x)
{
	int rev = 0;
	while (x != 0)
	{
		rev = rev * 10;
		rev = rev + x % 10;
		x = x / 10;
	}
	return rev;
}

void parz(int n, int m)
{
	vector<char> prime(m + 1, true);
	prime[0] = prime[1] = false;
	for (int i = n; i <= m; ++i)
		if (prime[i])
			if (i * 1ll * i <= m)
				for (int j = i*i; j <= m; j += i)
					prime[j] = false;

	for (int j = n; j <= m; j++)
	{
		if (prime[j] == true)
		{
			cout << j << endl;
		}
	}
	for (int j = n; j <= m; j++)
	{
		prime[j] = false;
	}

}
long long isp(long long n)

{

	if (n <= 1) return 0;

	if (n == 2) return 1;

	if (n % 2 == 0) return 0;

	for (long long i = 3; i*i <= n; i += 2)

		if (n%i == 0)

			return 0;

	return 1;

}
int tvan[10001];
struct on
{
	int x, y;
};
int poqraguyn(int a[], int n)
{
	int i, mn = 10000007,mni=0;
	for (i = 0; i < n; i++)
	{
		if (a[i] < mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
int mecaguyn(int a[], int n)
{
	int i, mn = 0, mni = 0;
	for (i = 0; i < n; i++)
	{
		if (a[i] > mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
bool row[100007];
	 bool col[100007];
int main()
{
	//freopen("bparty.in", "r", stdin);
	//freopen("bparty.out", "w", stdout);

	bool st[107];

	long long t = 0,  j; long long k = 0, mx = 0, mxi = 0, mxi1 = 0,mn=0;
	bool o = true;
	long long   c = 0, it;
	long long i = 0;
	int i1 = 0, i2;
	char s1[1007], s2[1007];
	int N;
	int jj = 0;
	string s;
	int n;

	map <int, int> mp;
	int m, x, y;
	set <char> myset;
	int a, b;
	int uru[100001];
	k = 0;
	j = 0;
	int ans = 1;
	cin >> n >> a >> b >> k;
	cin >> s;
	c = s.length();
	for (i = 0; i < c; i++)
	{
		if (s[i] == '0')
		{
			k++;
			if (k%b == 0)
			{ans++;
				uru[j] = i + 1;
				j++;

			}

		}else
			{
				k = 0;
			}
	}

	if (uru[0] == 1)
	{
		ans = ans - a;
		cout << ans - 1 << endl;
		for (i = 1; i < ans; i++)
		{
			cout << uru[i] << " ";
		}
	}

	else {
		ans = ans - a;
		cout << ans << endl;
		for (i = 0; i < ans; i++)
		{
			cout << uru[i] << endl;
		}
	}
	return 0;

}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <map>
#include <set>
using namespace std;

const int N = 100003;

vector <int> graph[10007];

int mark[10007];
void bfs(int s)
{
	queue<int> q;
	mark[s] = 1;
	q.push(s);
	while (!q.empty())
	{
		int u = q.front();
		q.pop();
		for (int i = 0; i < graph[u].size(); i++)
		{
			int h = graph[u][i];
			if (mark[h] == 0)
			{
				mark[h] = mark[u] + 1;
				q.push(h);
			}
		}
	}
}
int reverse(int x)
{
	int rev = 0;
	while (x != 0)
	{
		rev = rev * 10;
		rev = rev + x % 10;
		x = x / 10;
	}
	return rev;
}

void parz(int n, int m)
{
	vector<char> prime(m + 1, true);
	prime[0] = prime[1] = false;
	for (int i = n; i <= m; ++i)
		if (prime[i])
			if (i * 1ll * i <= m)
				for (int j = i*i; j <= m; j += i)
					prime[j] = false;

	for (int j = n; j <= m; j++)
	{
		if (prime[j] == true)
		{
			cout << j << endl;
		}
	}
	for (int j = n; j <= m; j++)
	{
		prime[j] = false;
	}

}
long long isp(long long n)

{

	if (n <= 1) return 0;

	if (n == 2) return 1;

	if (n % 2 == 0) return 0;

	for (long long i = 3; i*i <= n; i += 2)

		if (n%i == 0)

			return 0;

	return 1;

}
int tvan[10001];
struct on
{
	int x, y;
};
int poqraguyn(int a[], int n)
{
	int i, mn = 10000007,mni=0;
	for (i = 0; i < n; i++)
	{
		if (a[i] < mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
int mecaguyn(int a[], int n)
{
	int i, mn = 0, mni = 0;
	for (i = 0; i < n; i++)
	{
		if (a[i] > mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
bool row[100007];
	 bool col[100007];vector <int> uru;bool st[107];

	long long t = 0,  j; long long k = 0, mx = 0, mxi = 0, mxi1 = 0,mn=0;
	bool o = true;
	long long   c = 0, it;
	long long i = 0;
	int i1 = 0, i2;
	char s1[1007], s2[1007];

	int jj = 0;
	string s;
	int n;

	map <int, int> mp;
	int m, x, y;
	set <char> myset;
	int a, b;

	int ans = 0;
	vector <int> v;
int main()
{
	//freopen("bparty.in", "r", stdin);
	//freopen("bparty.out", "w", stdout);

	string s;

	cin >> n >>a >> b >> c;
	cin >> s;
	for (int i = 0; i<s.size(); ++i) {
		if (s[i] == '0') {
			++k;
			if (k%b == 0) {
				++ans; v.push_back(i + 1);
			}
		}
		else
			k = 0;
	}
	cout << ans - a + 1 << endl;
	for (int i = 0; i<ans - a + 1; ++i)
		cout << v[i] << " ";
	return 0;

}


#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <map>
#include <set>
using namespace std;

const int N = 100003;

vector <int> graph[10007];

int mark[10007];
void bfs(int s)
{
	queue<int> q;
	mark[s] = 1;
	q.push(s);
	while (!q.empty())
	{
		int u = q.front();
		q.pop();
		for (int i = 0; i < graph[u].size(); i++)
		{
			int h = graph[u][i];
			if (mark[h] == 0)
			{
				mark[h] = mark[u] + 1;
				q.push(h);
			}
		}
	}
}
int reverse(int x)
{
	int rev = 0;
	while (x != 0)
	{
		rev = rev * 10;
		rev = rev + x % 10;
		x = x / 10;
	}
	return rev;
}

void parz(int n, int m)
{
	vector<char> prime(m + 1, true);
	prime[0] = prime[1] = false;
	for (int i = n; i <= m; ++i)
		if (prime[i])
			if (i * 1ll * i <= m)
				for (int j = i*i; j <= m; j += i)
					prime[j] = false;

	for (int j = n; j <= m; j++)
	{
		if (prime[j] == true)
		{
			cout << j << endl;
		}
	}
	for (int j = n; j <= m; j++)
	{
		prime[j] = false;
	}

}
long long isp(long long n)

{

	if (n <= 1) return 0;

	if (n == 2) return 1;

	if (n % 2 == 0) return 0;

	for (long long i = 3; i*i <= n; i += 2)

		if (n%i == 0)

			return 0;

	return 1;

}
int tvan[10001];
struct on
{
	int x, y;
};
int poqraguyn(int a[], int n)
{
	int i, mn = 10000007,mni=0;
	for (i = 0; i < n; i++)
	{
		if (a[i] < mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
int mecaguyn(int a[], int n)
{
	int i, mn = 0, mni = 0;
	for (i = 0; i < n; i++)
	{
		if (a[i] > mn)
		{
			mn = a[i];
			mni = i;
		}
	}
	return mni;
}
bool row[100007];
	 bool col[100007];
int main()
{
	//freopen("bparty.in", "r", stdin);
	//freopen("bparty.out", "w", stdout);

	bool st[107];

	long long t = 0,  j; long long k = 0, mx = 0, mxi = 0, mxi1 = 0,mn=0;
	bool o = true;
	long long   c = 0, it;
	long long i = 0;
	int i1 = 0, i2;
	char s1[1007], s2[1007];
	int N;
	int jj = 0;
	string s;
	int n;

	map <int, int> mp;
	int m, x, y;
	set <char> myset;
	int a, b;

	k = 0;
	cin >> n >> a >> b >> k;
	cin >> s;
cout<<2<<endl;
cout<<1<<" "<<2;

	return 0;

}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	int n, a, b, k;
	cin >> n >> a >> b >> k;
	string s;
	cin >> s;
	int c0 = 0;
	vector<int> r;
	for (int _ = 0; _ < n; _++)
	{
		if (s[_] == '0')
		{
			c0++;
		}
		else
		{
			c0 = 0;
		}
		if (c0 >= b)
		{
			r.push_back(_ + 1);
			c0 = 0;
		}
	}
	cout << r.size() << endl;
	for (int _ = 0; _ < r.size() - a - 1; _++)
	{
		cout << r[_];
		if (_ != r.size() - a - 2)
		{
			cout << " ";
		}
	}
	return 0;
}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	int n, a, b, k;
	cin >> n >> a >> b >> k;
	string s;
	cin >> s;
	int c0 = 0;
	vector<int> r;
	for (int _ = 0; _ < n; _++)
	{
		if (s[_] == '0')
		{
			c0++;
		}
		else
		{
			c0 = 0;
		}
		if (c0 >= b)
		{
			r.push_back(_ + 1);
			c0 = 0;
		}
	}
	cout << r.size() << endl;
	for (int _ = 0; _ < r.size(); _++)
	{
		cout << r[_];
		if (_ != r.size() - 1)
		{
			cout << " ";
		}
	}
	return 0;
}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	int n, a, b, k;
	cin >> n >> a >> b >> k;
	string s;
	cin >> s;
	int c0 = 0;
	vector<int> r;
	for (int _ = 0; _ < n; _++)
	{
		if (s[_] == '0')
		{
			c0++;
		}
		else
		{
			c0 = 0;
		}
		if (c0 >= b)
		{
			r.push_back(_ + 1);
			c0 = 0;
		}
	}
	cout << r.size() << endl;
	for (int _ = 0; _ < r.size() - a + 1; _++)
	{
		cout << r[_] - a + 1;
		if (_ != r.size() - a)
		{
			cout << " ";
		}
	}
	return 0;
}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	int n, a, b, k;
	cin >> n >> a >> b >> k;
	string s;
	cin >> s;
	int c0 = 0;
	vector<int> r;
	for (int _ = 0; _ < n; _++)
	{
		if (s[_] == '0')
		{
			c0++;
		}
		else
		{
			c0 = 0;
		}
		if (c0 >= b)
		{
			r.push_back(_ + 1);
			c0 = 0;
		}
	}
	cout << r.size() - a + 1 << endl;
	for (int _ = 0; _ < r.size() - a + 1; _++)
	{
		cout << r[_];
		if (_ != r.size() - a)
		{
			cout << " ";
		}
	}
	return 0;
}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
	int n, a, b, k;
	cin >> n >> a >> b >> k;
	string s;
	cin >> s;
	int c0 = 0;
	vector<int> r;
	for (int _ = 0; _ < n; _++)
	{
		if (s[_] == '0')
		{
			c0++;
		}
		else
		{
			c0 = 0;
		}
		if (c0 >= b)
		{
			r.push_back(_ + 1);
			c0 = 0;
		}
	}
	cout << r.size() << endl;
	for (int _ = 0; _ < r.size() - a + 1; _++)
	{
		cout << r[_];
		if (_ != r.size() - a)
		{
			cout << " ";
		}
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
const int _=1e5+6;
int n,a,b,k,ans[_];
char s[_];
int main() {
	scanf("%d%d%d%d\n%s",&n,&a,&b,&k,s+1);
	int cnt=0,js=0;
	for(int i=1;i<=n;++i) {
		if(s[i]=='0') {
			if(++cnt==b) ans[++js]=i,cnt=0;
		} else cnt=0;
	}
	printf("%d\n",js-a+1);
	for(int i=1;i<=js-a+1;++i) printf("%d ",ans[i]);
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
const int _=2e5+6;
int n,a,b,k,ans[_];
char s[_];
int main() {
	scanf("%d%d%d%d\n%s",&n,&a,&b,&k,s+1);
	int cnt=0,js=0;
	for(int i=1;i<=n;++i) {
		if(s[i]=='0') {
			if(++cnt==b) ans[++js]=i,cnt=0;
		} else cnt=0;
	}
	printf("%d\n",js-a+1);
	for(int i=1;i<=js-a+1;++i) printf("%d ",ans[i]);
	return 0;
}


#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <set>
#include <climits>
#include <cstdio>
#include <iomanip>
#include <iterator>
#include <deque>
#include <map>
#include <cassert>
#include <ctime>

// #include <bits/stdc++.h>
#include <iostream>

using namespace std;

#define pb push_back
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define size(a) (int)a.size()
typedef long long ll;
typedef long double ld;
const int inf = 2e9;
const long double eps = 0.000001;
const long long mod = 1e9 + 7;
const long double PI = 3.14159265359;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	#if _SLOVO
		freopen("input.txt", "r", stdin);
		freopen("output.txt", "w", stdout);
	#else
		//freopen("fixedsum.in", "r", stdin);
		//freopen("fixedsum.out", "w", stdout);
	#endif

	int n, a, b, k;
	cin >> n >> a >> b >> k;
	string s;
	cin >> s;

	int cnt = 0, j;
	for (j = size(s) - 1; j >= 0 && a > 0; j--) {
		if (s[j] == '0') {
			cnt++;
			if (cnt == b) {
				a--;
				cnt = 0;
			}
		} else cnt = 0;
	}
	int it = j + 1;

	cnt = 0;
	vector < int > ans;
	ans.push_back(it);
	for (int i = 0; i < it; i++) {
		if (s[i] == '0') {
			cnt++;
			if (cnt == b) {
				ans.push_back(i);
				cnt = 0;
			}
		} else cnt = 0;
	}

	cout << size(ans) << "\n";
	for (int i = 0; i < size(ans); i++) cout << ans[i] + 1 << " ";
	return 0;
}


#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <set>
#include <climits>
#include <cstdio>
#include <iomanip>
#include <iterator>
#include <deque>
#include <map>
#include <cassert>
#include <ctime>

// #include <bits/stdc++.h>
#include <iostream>

using namespace std;

#define pb push_back
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define size(a) (int)a.size()
typedef long long ll;
typedef long double ld;
const int inf = 2e9;
const long double eps = 0.000001;
const long long mod = 1e9 + 7;
const long double PI = 3.14159265359;

int T;
vector < int > len;

bool can(int v) {
	int t = 0;
	for (int i = 0; i < size(len); i++) {
		int q = v - len[i];
		if (q < 0) return false;
		t += len[i] * 2 - min(q, len[i]);
	}
	return t <= T;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	#if _SLOVO
		freopen("input.txt", "r", stdin);
		freopen("output.txt", "w", stdout);
	#else
		//freopen("fixedsum.in", "r", stdin);
		//freopen("fixedsum.out", "w", stdout);
	#endif

	int n, k, s;
	cin >> n >> k >> s >> T;

	vector < int > c(n), v(n);
	for (int i = 0; i < n; i++) {
		cin >> c[i] >> v[i];
	}
	vector < int > z(k);
	for (int i = 0; i < k; i++) {
		cin >> z[i];
	}
	sort(all(z));
	z.push_back(s);

	len.resize(k + 1);
	len[0] = z[0];
	for (int i = 1; i <= k; i++) {
		len[i] = z[i] - z[i - 1];
	}

	int l = -1, r = 1e9 + 1;
	while (r - l > 1) {
		int m = (l + r) / 2;
		if (can(m)) {
			r = m;
		} else {
			l = m;
		}
	}
	int ans = 2e9;
	for (int i = 0; i < n; i++) {
		if (v[i] >= r) ans = min(ans, c[i]);
	}
	if (ans == 2e9) cout << -1;
	else cout << ans;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define PN printf("\n")
#define MODV 1000000007

typedef long long ll;
typedef double dbl;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pi;
void addmod(int &a, ll b){a=(a+b); if(a>=MODV)a-=MODV;}
void mulmod(int &a, ll b){a=(a*b)%MODV;}
template<class T>bool domin(T &a, const T &b){return a>b?a=b,1:0;}
template<class T>bool domax(T &a, const T &b){return a<b?a=b,1:0;}
int gi(){int a;scanf("%d",&a);return a;}
ll gll(){ll a;scanf("%lld",&a);return a;}

typedef pi pqk;

#define MAXN 200007
int main() {
  int n=gi(), a=gi(), b=gi(), k=gi();
  char *s;
  priority_queue<pqk> pqa;
  s = new char[MAXN];
  scanf(" %s", s);
  s[n]='1';
  s[n+1]=0;
  int ci=-1, aa=0;
  for(int i=0;i<=n;i++)
  if(s[i]=='1'){
    int l=i-ci-1;
    if(l>=b){
      aa+=(l/b);
      pqa.push({ci+1,i-1});
    }
    ci=i;
  }
  assert(aa>=a);
  int ans=aa-a+1;
  cout<<ans<<endl;
  while(ans>0){
    pqk tk=pqa.top();
    pqa.pop();
    int ci=tk.fi+b-1, ei=tk.se;
    for(int i=ci;i<=ei && ans>0;i+=b){
      printf("%d ",i+1);
      ans--;
    }
  }
  return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define PN printf("\n")
#define MODV 1000000007

typedef long long ll;
typedef double dbl;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pi;
void addmod(int &a, ll b){a=(a+b); if(a>=MODV)a-=MODV;}
void mulmod(int &a, ll b){a=(a*b)%MODV;}
template<class T>bool domin(T &a, const T &b){return a>b?a=b,1:0;}
template<class T>bool domax(T &a, const T &b){return a<b?a=b,1:0;}
int gi(){int a;scanf("%d",&a);return a;}
ll gll(){ll a;scanf("%lld",&a);return a;}

typedef pi pqk;

#define MAXN 200007
int main() {
  int n=gi(), a=gi(), b=gi(), k=gi();
  char *s;
  priority_queue<pqk> pqa;
  s = new char[MAXN];
  scanf(" %s", s);
  s[n]='1';
  s[n+1]=0;
  int ci=-1, aa=0;
  for(int i=0;i<=n;i++)
  if(s[i]=='1'){
    int l=i-ci-1;
    if(l>=b){
      aa+=(l/b);
      pqa.push({ci+1,i-1});
    }
    ci=i;
  }
  assert(aa>=a);
  int ans=aa-a+1;
  cout<<ans<<endl;
  while(ans>0){
    pqk tk=pqa.top();
    pqa.pop();
    int ci=tk.fi+b-1, ei=tk.se;
    for(int i=ci;i<=ei && ans>0;i+=b){
      printf("%d ",i);
      ans--;
    }
  }
  return 0;
}


#include <iostream>
#include <string>
using namespace std;

int n,a,b,k;
string waters;
int temp = 0;
int shot;
int sent = 1;
int main()
{
	cin>>n>>a>>b>>k;
	cin>>waters;
    int bullseye[b];
	for (int i=0;i<a;)
	{

		if(waters[i] == 0)
		{
		temp++;
		i++;
	    }
		if(waters[i] == 1)
		{
		temp = 0;
		i++;
		}
		if(temp >= b )
		{

		bullseye[b - 1] = i + 1	;
		shot++;
	    sent++;
		}
	}
   cout<<shot;
   for(int w = 0; w < b + 1; )
   {
   	cout<<bullseye[b-w];
   }
}


#include <iostream>

using namespace std;

int number = 0;
string color;
int output;

int main()
{
cin>>number;//number of calculations
cin>>color;//inputting the string

for (int i=0; i<number; i++)
{
if(color[i]==color[i+1])//testing to see if there are two consecutive colors on the board
{
output++;//incrementing output value only if the 'if' statement returns true
}

}
cout<<output;
}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int n,a,b,k;
string waters;
int temp = 0;
int shot;
int sent = 1;

int main()
{
	cin>>n>>a>>b>>k;
	cin>>waters;
    int bullseye[b];

	for (int i=0;i<a;)
	{

		if(waters[i] == 0)
		{
		temp++;
		i++;
	    }
		if(waters[i] == 1)
		{
		temp = 0;
		i++;
		}

		if(temp >= b )
		{

		bullseye[b - 1] = i + 1	;
		shot++;
	    sent++;
		}

	}
   cout<<shot;

   for(int w = 0; w < b + 1; )
   {
   	cout<<bullseye[b-w];

   }

}


#include <iostream>
#include <string>
#include <vector>
using namespace std;

int n,a,b,k;
string waters;
int temp = 0;
int shot;
int sent = 1;
//test

int main()
{
	cin>>n>>a>>b>>k;
	cin>>waters;
    int bullseye[b];

	for (int i=0;i<a;)
	{

		if(waters[i] == 0)
		{
		temp++;
		i++;
	    }
		if(waters[i] == 1)
		{
		temp = 0;
		i++;
		}

		if(temp >= b )
		{

		bullseye[b - 1] = i + 1	;
		shot++;
	    sent++;
		}

	}
   cout<<shot;

   for(int w = 0; w < b + 1; )
   {
   	cout<<bullseye[b-w];

   }

}


#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int n,m;
vector <int> vec;
int main()
{
int n,a,b,k;
cin>>n>>a>>b>>k;
string waters;
cin>>waters;
int temp=0;
for (int i=0;i<n;i++)
  if (waters[i]=='1') temp=0;
   else {
    temp++;
    if (temp==b) {
    vec.push_back(i+1);
    temp=0;
    }
  }

int ans=max(1,(int)vec.size()-a+1);
cout<<ans<<endl;
for (int i=0;i<ans;i++) cout<<vec[i]<<' ';
 }


#include <bits/stdc++.h>

//#pragma GCC optimize("Ofast")
//1.0 * clock() / CLOCKS_PER_SEC

#define fi first
#define se second
#define int long long int
#define dl double long

using namespace std;

const int N = 3e3 + 7;
const int mod = 998244353;

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

void solve1()
{
    int n, a, b, k, t = 0;
    cin >> n >> a >> b >> k;
    string str;
    cin >> str;
    vector<int> v;
    for(int i = 0; i < n; i++){
        if(str[i] == '0')
            t++;
        if(str[i] == '1')
            t = 0;
        if(t == b){
            v.push_back(i + 1);
            t = 0;
        }
    }
    cout << v.size() - a + 1 << endl;
    for(int i = 0; i < v.size() - a + 1; i++)
        cout << v[i] << " ";
}

int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0); srand(time(0));
    //freopen( "input.txt" , "r" , stdin );
    //freopen( "output.txt" , "w" , stdout );
	//freopen( "outofplace.in" , "r" , stdin );
    //freopen( "outofplace.out" , "w" , stdout );

    int cghf = 1;//cin >> cghf;
    while( cghf-- ){
        solve1();
    }
}


#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int n,ans,pos[maxn],a,b,k;
char s[maxn];
int main(){
	cin>>n>>a>>b>>k;
	scanf("%s",s+1);
	int d=0;
	for(int i=1;i<=n;++i){
		if(s[i]=='0')d++;
		if(s[i]=='1')d=0;
		if(d==b){
			d=0;
			pos[++ans]=i;
		}
	}
	ans-=a-1;
	cout<<ans<<endl;
	for(int i=1;i<=ans;++i){
		cout<<pos[i]<<" ";
	}

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
const int maxn=1000010;
int n,ans,pos[maxn],a,b,k;
char s[maxn];
int main(){
	cin>>n>>a>>b>>k;
	scanf("%s",s+1);
	int d=0;
	for(int i=1;i<=n;++i){
		if(s[i]=='0')d++;
		if(s[i]=='1')d=0;
		if(d==b){
			d=0;
			pos[++ans]=i;
		}
	}
	ans-=a-1;
	cout<<ans<<endl;
	for(int i=1;i<=ans;++i){
		cout<<pos[i]<<" ";
	}

	return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    vi nb;
    int ns = 0;
    int d = s.length();
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '1')
        {

            ns = 0;
        }
        else
            ns++;
        if (ns == b && a > 0)
        {
            for (int j = i; j >= i - b + 1; j--)
            {
                s[j] = '2';
            }
            ns = 0;
            a--;
        }
    }
    //cout << s << " ";
    int count = 0;
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '2' || s[i] == '1')
            ns = 0;
        else
            ns++;
        if (ns == b)
        {
            nb.push_back(i);
            ns = 0;
            count++;
        }
    }
    int f = 0;
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '2')
        {
            f++;
            if (f == b)
            {
                nb.push_back(i);
                count++;
                break;
            }
        }
    }

    cout << count << "\n";
    for (int i = 0; i < nb.size(); i++)
        cout << nb[i] + 1 << " ";

    return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    vi nb;
    int ns = 0;
    int d = s.length();
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '1')
        {

            ns = 0;
        }
        else
            ns++;
        if (ns == b && a > 0)
        {
            for (int j = i; j >= i - b + 1; j--)
            {
                s[j] = '2';
            }
            ns = 0;
            a--;
        }
    }
    //cout << s << " ";
    int count = 0;
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '2' || s[i] == '1')
            ns = 0;
        else
            ns++;
        if (ns == b)
        {
            nb.push_back(i);
            ns = 0;
            count++;
        }
    }
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '2')
        {
            nb.push_back(i);
            count++;
            break;
        }
    }
    cout << count << "\n";
    for (int i = 0; i < nb.size(); i++)
        cout << nb[i] + 1 << " ";

    return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    int d = s.length();
    int count = 0;
    int pas = 0;
    vi ind;
    for (int i = 0; i < d; i++)
    {

        if (s[i] == '1' || i == d - 1)
        {
            if (i == d - 1 && s[i] != '1')
                pas++;
            int p = pas / b;
            //   cout << pas << " ";
            int r = pas % b;
            //cout << r << " ";
            if (p >= 1)
            {
                count++;
                ind.push_back(i - r);
            }
            pas = 0;
        }
        else if (pas / b == a + 1)
        {
            count += 2;

            ind.push_back(i + 1);
            ind.push_back(i - b + 1);
            pas = 0;
        }
        else
            pas++;
        // cout << pas << " ";
    }
    cout << count << "\n";
    for (int i = 0; i < ind.size(); i++)
        cout << ind[i] << " ";

    return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    int sum = 0;

    for (int l = 0, r = 0; l < n;)
    {
        if (s[l] == '1')
        {
            l++;
        }
        else
        {
            r = l;
            while (r < n && s[r] == '0')
                r++;
            sum += (r - l) / b;
            l = r;
        }
    }

    cout << sum - a + 1 << endl;

    for (int l = 0, r = 0; sum - a + 1 > 0 && l < n;)
    {
        if (s[l] == '1')
        {
            l++;
        }
        else
        {
            r = l;
            while (r < n && s[r] == '0' && sum - a + 1 > 0)
            {
                if (r - l + 1 == b)
                {
                    sum--;
                    l = r + 1;
                    cout << r + 1 << ' ';
                }
                r++;
            }
            l = r;
        }
    }
    return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    vi nb;
    int ns = 0;
    int d = s.length();
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '1')
        {

            ns = 0;
        }
        else
            ns++;
        if (ns == b && a > 0)
        {
            for (int j = i; j >= i - b + 1; j--)
            {
                s[j] = '2';
            }
            ns = 0;
            a--;
        }
    }
    //cout << s << " ";
    int count = 0;
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '2' || s[i] == '1')
            ns = 0;
        else
            ns++;
        if (ns == b)
        {
            nb.push_back(i);
            ns = 0;
            count++;
        }
    }
    int f = 0;
    for (int i = 0; i < d; i++)
    {
        if (s[i] == '2' && f == b)
        {
            nb.push_back(i);
            count++;
            break;
        }
        else if (s[i] == '2')
            f++;
    }
    cout << count << "\n";
    for (int i = 0; i < nb.size(); i++)
        cout << nb[i] + 1 << " ";

    return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    int d = s.length();
    int count = 0;
    int pas = 0;
    vi ind;
    for (int i = 0; i < d; i++)
    {

        if (s[i] == '1' || i == d - 1)
        {
            if (i == d - 1 && s[i] != '1')
                pas++;
            int p = pas / b;
            //   cout << pas << " ";
            int r = pas % b;
            //cout << r << " ";
            if (pas / b == a + 1)
            {
                count += 2;

                ind.push_back(i + 1);
                ind.push_back(i - b + 1);
                pas = 0;
            }
            else if (p >= 1)
            {
                count++;
                ind.push_back(i - r);
            }
            pas = 0;
        }
        else if (pas / b == a + 1)
        {
            count += 2;

            ind.push_back(i + 1);
            ind.push_back(i - b + 1);
            pas = 0;
        }
        else
            pas++;
        // cout << pas << " ";
    }
    cout << count << "\n";
    if (count == 1 && n == 1)
    {
        cout << 1;
        return 0;
    }
    for (int i = 0; i < ind.size(); i++)
        cout << ind[i] << " ";

    return 0;
}


#include <bits/stdc++.h>
#include <algorithm>
#include <string.h>
#include <math.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000007;

#define pf(n) cout << n << endl
#define pfs(n) cout << n
#define ps() cout << " "
#define sf(n) cin >> n
#define in(i, n) for (int i = 0; i < n; i++)
#define vi vector<int>
#define vp vector<pair<int, int>>
#define graph vector<vector<int>>
#define vs vector<string>
const int MAXN = 100005;
/**  '' "Lionel VB" ^ **/

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    string s;
    cin >> s;
    int d = s.length();
    int count = 0;
    int pas = 0;
    vi ind;
    for (int i = 0; i < d; i++)
    {

        if (s[i] == '1' || i == d - 1)
        {
            if (i == d - 1 && s[i] != '1')
                pas++;
            int p = pas / b;
            //   cout << pas << " ";
            int r = pas % b;
            //cout << r << " ";
            if (p >= 1)
            {
                count++;
                ind.push_back(i - r);
            }
            pas = 0;
        }
        else if (pas / b == a + 1)
        {
            count += 2;

            ind.push_back(i + 1);
            ind.push_back(i - b + 1);
            pas = 0;
        }
        else
            pas++;
        // cout << pas << " ";
    }
    cout << count << "\n";
    if (count == 1 && n == 1)
    {
        cout << 1;
        return 0;
    }
    for (int i = 0; i < ind.size(); i++)
        cout << ind[i] << " ";

    return 0;
}


#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define maxn 2*1e5
char c[200000];
int s[200000];
int vis[200000]={0};

int main(){
    int n,a,b,k;
    while(scanf("%d %d %d %d",&n,&a,&b,&k)!=EOF){
    scanf("%s",c);
    int num=0,num0=0,m=0;
    for(int i=0;i<n;i++){
        if(c[i]=='0'){
        num0++;
        if(num0==b){
            vis[m++]=i;
            num++;
            num0=0;
        }
    }
        if(c[i]=='1')num0=0;
    }
    printf("%d\n",num-a+1);
    printf("%d",vis[0]+1);
    for(int i=1;i<=num-a;i++){
        printf(" %d",vis[i]+1);
    }
    printf("\n");
}
    return 0;
}


#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define maxn 2*1e5
char c[200000];
int s[200000];
int vis[200000]={0};

int main(){
    int n,a,b,k;
    cin>>n>>a>>b>>k;
    for(int i=0;i<n;i++){
        cin>>c[i];
    }
    int num=0,num0=0;
    for(int i=0;i<n;i++){
        if(c[i]=='0')num0++;
        if(num0==b){
            vis[i]=1;
            num++;
            num0=0;
        }
        if(c[i]=='1')num0=0;
    }
    int ans;
    ans=num-a+1;
    printf("%d\n",ans);
    for(int i=n-1;i>=n-num*b;i--){
        if(vis[i]==1)printf("%d ",i+1);
    }
    return 0;
}


//cariaga le cs5 qtr2 prob2

#include <iostream> //include libs
#include <string>
#include <vector>

using namespace std;

int main() {
    int numShots, shipSize, shipNum, boardLength, ans; //init vars
    string shotsMade;
    int posShip = 0;
    int noShot = 0;
    vector<int> newShots;

    cin>>boardLength >>shipNum >>shipSize >>numShots; //inp stuff here
    cin>>shotsMade;

	for(int i = 0; i < boardLength; ++i) {
		if(shotsMade[i] == '1') //check for cells with no shots, count
			noShot = 0;

		else
			++noShot;

		if(noShot == shipSize) { //if consec. no. of cells with no shots can hold a ship's size, count
			newShots.push_back(i + 1);
			++posShip;
			noShot = 0;
		}
	}

	ans = posShip - (shipNum - 1); //minimum no. of shots

	cout<<ans <<endl; //output

	for(int j = 0; j < ans; ++j) {
		cout<<newShots[j] <<" ";
	}
}


//cariaga le cs5 qtr2 prob2

#include <iostream> //include libs
#include <string>
#include <vector>

using namespace std;

int main() {
    int numShots, shipSize, shipNum, boardLength, ans; //init vars
    string shotsMade;
    int posShip = 0;
    int noShot = 0;
    vector<int> newShots;

    cin>>boardLength >>shipNum >>shipSize >>numShots; //inp stuff here
    cin>>shotsMade;

	for(int i = 0; i < boardLength; ++i) {
		if(shotsMade[i] == 1) {
			noShot = 0;
		}
		else {
			++noShot;
		}
		if(noShot == shipSize) {
			newShots.push_back(i + 1);
			++posShip;
			noShot = 0;
		}
	}

	ans = posShip - (shipNum - 1);

	cout<<ans <<endl;

	for(int j = 0; j < ans; ++j) {
		cout<<newShots[j] <<" ";
	}
}


#include <iostream>
#include <cstdio>

using namespace std;

int n, a, b, k, i, cnt(0), ship[100001], j(0);
string s;

void Init()
{
    cin >> n >> a >> b >> k;
    cin >> s;
    for (i = 0; i < s.length(); i++)
    {
        if (s[i] == '0') cnt++;
        else cnt = 0;
        if (cnt == b) ship[++j] = i + 1, cnt = 0;
    }
    cout << j - a + 1 << endl;
    for (i = 1; i <= j - a + 1; i++) cout << ship[i] << " ";
}

int main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(NULL);
    //freopen("729D.inp", "r", stdin);
    //freopen("729D.out", "w", stdout);

	Init();
}
//Date 5 Month 2 Year 2017


#include <iostream>
#include <cstdio>

using namespace std;

int n, a, b, k, i, cnt(0), ship[200001], j(0);
string s;

void Init()
{
    cin >> n >> a >> b >> k;
    cin >> s;
    for (i = 0; i < s.length(); i++)
    {
        if (s[i] == '0') cnt++;
        else cnt = 0;
        if (cnt == b) ship[++j] = i + 1, cnt = 0;
    }
    cout << j - a + 1 << endl;
    for (i = 1; i <= j - a + 1; i++) cout << ship[i] << " ";
}

int main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(NULL);
    //freopen("729D.inp", "r", stdin);
    //freopen("729D.out", "w", stdout);

	Init();
}
//Date 5 Month 2 Year 2017


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;i++){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1;++i){
            cout << ans[i] << endl;
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;i++){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1;++i){
            cout << ans[i] << " ";
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;i++){
            if (str[i] == "0"){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == "1"){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1,i++){
            cout << ans[i];
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;i++){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1;i++){
            cout << ans[i];
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;i++){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1;++i){
            cout << ans[i];
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=1;i<=n;i++){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1;++i){
            cout << ans[i] << " ";
        }

    }

    return 0;
}


#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std;
const int maxn = 1e5+10;
typedef long long LL;
LL a[maxn];
int main()
{
    LL n,x;
    while((cin >> n >> x) != EOF){
        map<LL,LL> mp;
        for (int i = 0;i<n;i++){
            cin >> a[i];
            mp[a[i]]++;
        }
        LL cnt;
        LL ans;
        for (i=0;i<n;i++){
            LL cnt = a[i]^x;
            if (cnt != a[i]){
                ans += mp[cnt];
            }
            else{
                ans += mp[cnt]-1;
            }
        }
        cout << ans/2 << endl;

    }
    return 0;
}


#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()
{
    int n,a,b,k;
    while(scanf("%d%d%d%d",&n,&a,&b,&k)!=EOF)
    {
        scanf("%s",str+1);
        int m=0,cnt=0;
        for(int i=1;i<=n;++i)
        {
            if(str[i]=='0')
            {
                cnt++;
                if(cnt==b)
                {
                    ans[m++]=i;
                    cnt=0;
                }
            }
            if(str[i]=='1')
                cnt=0;
        }
        printf("%d\n",m+1-a);
        printf("%d",ans[0]);
        for(int i=1;i<=m-a;++i)
            printf(" %d",ans[i]);
        printf("\n");
    }
    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;++i){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        cout << ans[0];
        for (i=1;i<m-a+1;++i){
            cout  << " "<< ans[i];
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;++i){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        cout << ans[0];
        for (i=1;i<m-a+1;++i){
            cout  << " "<< ans[i];
        }
        cout << endl;
    }
    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;++i){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1;++i){
            cout << ans[i] << " ";
        }

    }

    return 0;
}


#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2*1e5+10;
char str[maxn];
int ans[maxn];
int main()  {
    int n,a,b,k;
    int i,m,cnt;
    while (cin >> n >> a >> b >> k){
        cin >> str;
        cnt = 0;
        m = 0;
        for (i=0;i<n;i++){
            if (str[i] == '0'){
                cnt++;
                if (cnt == b){
                    ans[m++] = i;
                    cnt = 0;
                }

            }
            if (str[i] == '1'){
                cnt = 0;
            }
        }
        cout << m-a+1 << endl;
        for (i=0;i<m-a+1,i++){
            cout << ans[i];
        }

    }

    return 0;
}


#include <bits/stdc++.h>

#define fr first
#define sc second
//#define int long long
#define forn(i, x, n) for (int i = x; i < (int)n; ++i)
#define all(x) x.begin(), x.end()
#define endl '\n'
#define pb push_back

using namespace std;

const int MAXN = 2e5 + 1, INF = 3e9, MEM = 1e9 + 7, KEK = 2017;
const double EPS = 1e-4;

set<pair<int, pair<int, int>>> kek;

main()
{
//    freopen("input.txt", "r", stdin);
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios::sync_with_stdio(0);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    int last = 0;
    forn(i, 1, n + 1) {
        char t;
        cin >> t;
        if (t == '1') {
            if (i - last - 1 >= b) {
                kek.insert({-(i - last - 1), {last, i}});
            }
            last = i;
        }
    }
    if (n - last >= b)
        kek.insert({-(n - last), {last, n + 1}});
    int c = 0;
    vector<int> ans;
    while (!kek.empty()) {
        auto cur = *(kek.begin());
        kek.erase(kek.begin());
        int r = cur.sc.sc, l = cur.sc.fr;
        ++c, ans.pb(l + b);
        l += 2 * b;
        if (l >= r)
            continue;
        ++c, ans.pb(l);
        if (r - l - 1 >= b)
            kek.insert({-(r - l - 1), {l, r}});
    }
    cout << c - a + 1 <<endl;
    forn(i, 0, c - a + 1)
        cout << ans[i] << ' ';
}


#include <bits/stdc++.h>

#define fr first
#define sc second
//#define int long long
#define forn(i, x, n) for (int i = x; i < (int)n; ++i)
#define all(x) x.begin(), x.end()
#define endl '\n'
#define pb push_back

using namespace std;

const int MAXN = 2e5 + 1, INF = 3e9, MEM = 1e9 + 7, KEK = 2017;
const double EPS = 1e-4;

set<pair<int, pair<int, int>>> kek;

main()
{
//    freopen("input.txt", "r", stdin);
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios::sync_with_stdio(0);
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    int last = 0;
    forn(i, 1, n + 1) {
        char t;
        cin >> t;
        if (t == '1') {
            if (i - last - 1 >= b) {
                kek.insert({-(i - last - 1), {last, i}});
            }
            last = i;
        }
    }
    kek.insert({-(n - last), {last, n + 1}});
    int c = 0;
    vector<int> ans;
    while (!kek.empty()) {
        auto cur = *(kek.begin());
        kek.erase(kek.begin());
        int r = cur.sc.sc, l = cur.sc.fr;
        ++c, ans.pb(l + b);
        l += 2 * b;
        if (l >= r)
            continue;
        ++c, ans.pb(l);
        if (r - l - 1 >= b)
            kek.insert({-(r - l - 1), {l, r}});
    }
    cout << c - a + 1 <<endl;
    forn(i, 0, c - a + 1)
        cout << ans[i] << ' ';
}


#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int main()
{
 char c[200000];
 gets(c);
 for(int i = 0; i < strlen(c); i++)
 {
  if(c[i] == '0')
  {
   c[i] = 'q';
   goto l;
  }
 }
 l:
 for(int i = 0; i < strlen(c); i++)
 {
  if(c[i] != 'q') printf("%c",c[i]);
 }
 return 0;
}


#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int main()
{
 char c[200000];
 bool check = false;
 gets(c);
 for(int i = 0; i < strlen(c); i++)
 {
  if(c[i] == '0')
  {
   c[i] = 'q';
   check = true;
   goto l;
  }
 }
 l:
 if(!check) puts(c);
 else
 for(int i = 0; i < strlen(c); i++)
 {
  if(c[i] != 'q') printf("%c",c[i]);
 }
 return 0;
}


#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

string c;

int main()
{
 cin>>c;
 int i;
 for(i = 0; i < c.size() - 1 && c[i] == '1'; i++)
 {
  printf("%d",1);
 }
 i++;
 for(; i < c.size(); i++)
  printf("%c",c[i]);
 return 0;
}


#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

char c[200000];

int main()
{
 bool check = false;
 gets(c);
 for(int i = 0; i < strlen(c); i++)
 {
  if(!check)
  {
   if(c[i] == '0')
   {
    check = true;
   }
   else
   {
    printf("%c", c[i]);
    goto l;
   }
  }
  else
  printf("%c", c[i]);
  l:;
 }
// if(!check) printf("%d",1);
 return 0;
}


#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

char c[200000];

int main()
{
 bool check = false;
 scanf("%s",c);
 int i;
 for(i = 0; i < strlen(c) - 1 && c[i] == '1'; i++)
 {
  printf("%d",1);
 }
 i++;
 for(; i < strlen(c); i++)
  printf("%c",c[i]);
 return 0;
}


#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include<list>
#include<stack>
#include<functional>
#include<sstream>
#include<iomanip>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<n;i++)

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

//stdin
//stdout

int a[3][3];

bool check()
{
	int res=a[0][0]+a[0][1]+a[0][2];
	//printf("[debug]:res=%d\n",res);

	for (int i = 1; i < 3; i++)
	{
		if (res!=a[i][0]+a[i][1]+a[i][2])
		{
			return false;
		}
	}
	for (int i = 0; i < 3; i++)
	{
		if (res!=a[0][i]+a[1][i]+a[2][i])
		{
			return false;
		}
	}

	if (res!=a[0][0]+a[1][1]+a[2][2])
	{
		return false;
	}
	if (res!=a[0][2]+a[1][1]+a[2][0])
	{
		return false;
	}
	return true;

}

int main()
{
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cin>>a[i][j];
		}
	}
	for (int sum = 0; sum < 100001; sum++)
	{
		int n1=sum-a[0][1]-a[0][2];
		int n2=sum-a[1][0]-a[1][2];
		int n3=sum-a[2][0]-a[2][1];
		if (0>n1 || 0>n2 || 0>n3)
		{
			continue;
		}
		a[0][0]=n1;
		a[1][1]=n2;
		a[2][2]=n3;

		//printf("[debug]:%d,%d,%d,%d\n",sum,n1,n2,n3);

		if (check())
		{
			cout<<a[0][0]<<" "<<a[0][1]<<" "<<a[0][2]<<endl;
			cout<<a[1][0]<<" "<<a[1][1]<<" "<<a[1][2]<<endl;
			cout<<a[2][0]<<" "<<a[2][1]<<" "<<a[2][2]<<endl;
			return 0;
		}
		a[0][0]=a[1][1]=a[2][2]=0;

	}

	return 0;
}


#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include<list>
#include<stack>
#include<functional>
#include<sstream>
#include<iomanip>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<n;i++)

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

//stdin
//stdout

int main()
{
	string str;

	cin>>str;

	if (str=="1")
	{
		cout<<"0"<<endl;
		return 0;
	}

	bool f=true;

	for (int i = 0; i < str.size(); i++)
	{
		if (f&&str[i]=='0')
		{
			f=false;
		}

		else
		{
			printf("%c",str[i]);
		}
	}
	puts("");

	return 0;
}


#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include<list>
#include<stack>
#include<functional>
#include<sstream>
#include<iomanip>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<n;i++)

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

//stdin
//stdout

int main()
{
	string str;

	cin>>str;

	if (str=="1")
	{
		cout<<"0"<<endl;
		return 0;
	}

	bool f=true;

	for (int i = 0; i < str.size(); i++)
	{
		if (f&&str[i]=='0')
		{
			f=false;
		}
		else
		{
			printf("%c",str[i]);
		}
	}
	puts("");

	return 0;
}


#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include<list>
#include<stack>
#include<functional>
#include<sstream>
#include<iomanip>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<n;i++)

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

//stdin
//stdout

int main()
{
	string str;

	cin>>str;

	if (str=="1")
	{
		cout<<"0"<<endl;
		return 0;
	}

	bool f=true;

	for (int i = 0; i < str.size(); i++)
	{
		if (f&&str[i]=='0')
		{
			f=false;
		}
		else
		{
			if (f&&str.size()-1==i)
			{
				return 0;
			}
			printf("%c",str[i]);
		}
	}
	puts("");

	return 0;
}


#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include<list>
#include<stack>
#include<functional>
#include<sstream>
#include<iomanip>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<n;i++)

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

//stdin
//stdout

int main()
{
	string str;

	cin>>str;

	if (str=="1")
	{
		cout<<"0"<<endl;
		return 0;
	}

	bool f=true;

	for (int i = 0; i < str.size(); i++)
	{
		if (f&&str[i]=='0')
		{
			f=false;
		}
		if (f&&str.size()-1==i)
		{
			return 0;
		}
		else
		{
			printf("%c",str[i]);
		}
	}
	puts("");

	return 0;
}


#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include<list>
#include<stack>
#include<functional>
#include<sstream>
#include<iomanip>
#include<set>
#include<bitset>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<n;i++)

typedef unsigned long long ull;
typedef long long ll;

const int INF=100000000;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

using namespace std;

typedef pair<int ,int > P;

//stdin
//stdout

int main()
{
	string str;

	cin>>str;

	bool f=true;

	for (int i = 0; i < str.size(); i++)
	{
		if (f&&str[i]=='0')
		{
			f=false;
		}
		else
		{
			printf("%c",str[i]);
		}
	}
	puts("");

	return 0;
}


#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
int i;
string s;
int main()

{
    #ifndef ONLINE_JUDGE
        freopen(".in","r",stdin);
        freopen(".out","w",stdout);
    #endif
    cin >> s;
    for (i = 0; i < s.length(); i++)
        if (s[i] == '0') { s.erase(i,1);break; }
    s.erase(s.length()-1,1);
    cout << s;
    return 0;
}


#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
int i;
string s;
int main()

{
    #ifndef ONLINE_JUDGE
        freopen(".in","r",stdin);
        freopen(".out","w",stdout);
    #endif
    cin >> s;
    for (i = 0; i < s.length(); i++)
        if (s[i] == '0') { s.erase(i,1);cout << s; exit(0); }
    s.erase(s.size()-1,1);
    cout << s;
    return 0;
}


#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
int i;
string s;
int main()

{
	#ifndef ONLINE_JUDGE
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
	cin >> s;
	for (i = 0; i < s.length(); i++)
		if (s[i] == '0') { s.erase(i,1);cout << s; exit(0); }
//	s.erase(s.size()-1,1);
	cout << s;
	return 0;
}


#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
int i;
string s;
int main()

{
	#ifndef ONLINE_JUDGE
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
	cin >> s;
	for (i = 0; i < s.length(); i++)
		if (s[i] == '0' && i != s.length() - 1) {s.erase(i,1);break;}
	cout << s;
	return 0;
}


#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
int i;
string s;
int main()

{
	#ifndef ONLINE_JUDGE
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
	cin >> s;
	for (i = 0; i < s.length(); i++)
		if (s[i] == '0') { s.erase(i,1);cout << s; exit(0); }
	s.erase(s.size()-1,1);
	cout << s;
	return 0;
}


#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
int i;
string s;
int main()

{
	#ifndef ONLINE_JUDGE
		freopen(".in","r",stdin);
		freopen(".out","w",stdout);
	#endif
	cin >> s;
	for (i = 0; i < s.length(); i++)
		if (s[i] == '0') {s.erase(i,1);break;}
	cout << s;
	return 0;
}


#include<iostream>
#include<string.h>
using namespace std;
char str[100010];
int main()
{
	cin>>str;
	int len = strlen(str);
	int flag = 0;
	int i;
	for(i = 0; i < len; ++i)
	{
		if(flag == 0 && str[i] == '1')
			flag = 1;
		if(flag == 1 && str[i] == '0')
			flag = 2;
		else
			cout<<str[i];
	}
	cout<<endl;
	return 0;
}


#include<iostream>
#include<string>
using namespace std;
char str[100010];
int main()
{
	cin>>str;
	int len = strlen(str);
	int flag = 0;
	int i;
	for(i = 0; i < len; ++i)
	{
		if(flag == 0 && str[i] == '0')
		{
			flag = 1;
		}
		else
		{
			cout<<str[i];
		}
	}
	cout<<endl;
	return 0;
}


#include<iostream>
#include<string.h>
using namespace std;
char str[100010];
int main()
{
	cin>>str;
	int len = strlen(str);
	int flag = -1;
	int i;
	for(i = 0; i < len; ++i)
	{
		if(flag == -1 && str[i] == '1')
			flag = -2;
		if(flag == -2 && str[i] == '0')
			flag = i;
	}
	if(flag == -2)
	{
		for(i = 1; i < len; ++i)
			cout<<str[i];
		cout<<endl;
	}
	if(flag >= 0)
	{
		for(i = 0; i < len; ++i)
		{
			if(flag != i)
				cout<<str[i];
		}
		cout<<endl;
	}
	return 0;
}


#include<iostream>
#include<string.h>
using namespace std;
char str[100010];
int main()
{
	cin>>str;
	int len = strlen(str);
	int flag = 0;
	int i;
	for(i = 0; i < len; ++i)
	{
		if(flag == 0 && str[i] == '0')
		{
			flag = 1;
		}
		else
		{
			cout<<str[i];
		}
	}
	cout<<endl;
	return 0;
}


#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<math.h>
#include<algorithm>
#include<vector>
#include<fstream>
#include<string>
#include<stack>
#include <iomanip>
#define pi 3.1415926535
#define mod9 1000000009
#define mod7 1000000007
#define INF 1000000000
#define start clock_t startTime = clock();
#define endcout <<  double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;
using namespace std;
 int i,j,k,c,ans,res;
 long a[10000],b[4]={0};
int main(){
//freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
  long n,a[10000];
   string t;
   cin>>t;
   n=t.length();
   long s=0;
   for (int k=0;k<=n-1;++k)
      if (t[k]=='0' && s==0){
                    t.erase(k,1);
                    break;
                    ++s;
                    }
                    if (s==1){
                        cout<<t;
                              }
                              else {
                                   t[n-1]=' ';
                            cout<<t;
                                   }
 return 0;
}


#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<math.h>
#include<algorithm>
#include<vector>
#include<fstream>
#include<string>
#include<stack>
#include <iomanip>
#define pi 3.1415926535
#define mod9 1000000009
#define mod7 1000000007
#define INF 1000000000
#define start clock_t startTime = clock();
#define endcout <<  double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;
using namespace std;
 int i,j,k,c,ans,res;
 long a[1000000],b[4]={0};
int main(){
//freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
 long long n,a[4][4]={0};
 n=3;
 for (int k=1;k<=n;++k)
    for (int i=1;i<=n;++i){
        cin>>a[k][i];
         }
         long p=(a[1][2]+a[1][3])-(a[1][3]+a[2][3]);
        for (int k=1;k<=3*100000;++k){
            if (k+p>=0){
            a[1][1]=k;
            a[3][3]=k+p;
            a[2][2]=a[1][1]+a[1][2]+a[1][3]-a[1][1]-a[3][3];
            if (a[2][2]<0) break;
          long  s=a[1][1]+a[1][2]+a[1][3];
            if (s==a[2][1]+a[2][2]+a[2][3] && s==a[3][1]+a[3][2]+a[3][3] && a[1][1]+a[2][2]+a[3][3]==s && s==a[3][1]+a[2][2]+a[1][3]) {
                                           break;
                                           }
                                           }
        }
         for (int k=1;k<=n;++k){
            for (int i=1;i<=n;++i){
                cout<<a[k][i]<<' ';
            }
            cout<<endl;
            }
 return 0;
}


#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
#include<string>
#include<stack>
#include <iomanip>
#define pi 3.1415926535
#define mod9 1000000009
#define mod7 1000000007
#define INF 1000000000
#define start clock_t startTime = clock();
#define endcout <<  double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;
using namespace std;
 long a[10000],b[4]={0};
int main(){
//freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
  long n,a[10000];
   string t;
   cin>>t;
   n=t.length();
   long s=0;
   for (int k=0;k<=n-1;++k)
      if (t[k]=='0' && s==0){
                    t.erase(k,1);
                    ++s;
                    break;
                    }
                    if (s==1){
                        cout<<t;
                              }
                              else {
                                   t[n-1]=' ';
                            cout<<t;
                                   }
 return 0;
}


#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
#include<string>
#include<stack>
#include <iomanip>
#define pi 3.1415926535
#define mod9 1000000009
#define mod7 1000000007
#define INF 1000000000
#define start clock_t startTime = clock();
#define endcout <<  double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;
using namespace std;
 long a[10000],b[4]={0};
int main(){
freopen("input.txt","r",stdin);
 freopen("output.txt","w",stdout);
  long n,a[10000];
   string t;
   cin>>t;
   n=t.length();
   long s=0;
   for (int k=0;k<=n-1;++k)
      if (t[k]=='0' && s==0){
                    t.erase(k,1);
                    ++s;
                    break;
                    }
                    if (s==1){
                        cout<<t;
                              }
                              else {
                                   t[n-1]=' ';
                            cout<<t;
                                   }
 return 0;
}


#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
#include<string>
#include<stack>
#include <iomanip>
#define pi 3.1415926535
#define mod9 1000000009
#define mod7 1000000007
#define INF 1000000000
#define start clock_t startTime = clock();
#define endcout <<  double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl;
using namespace std;
 long a[10000],b[4]={0};
int main(){
//freopen("input.txt","r",stdin);
 //freopen("output.txt","w",stdout);
  long n,a[10000];
   string t;
   cin>>t;
   n=t.length();
   long s=0,p=0;
   for (int k=0;k<=n-1;++k)
      if (t[k]=='0' && s==0){
                     p=k;
                    ++s;
                    break;
                    }
                for (int k=0;k<=n-1;++k)
                   if (p!=k) cout<<t[k];
 return 0;
}


#include<iostream>
#include<stdio.h>
#include<string.h>
#include<sstream>
#include<cmath>
#include<vector>
#include<set>
#include<algorithm>
#include<climits>
#include<stack>
#include<deque>
#define MAX 200000

typedef long long ll;
using namespace std;

int main(){

	char a[MAX];
	cin>>a;
	int l = strlen(a);
	int i=0;
	while(i<l && a[i]!='0')
		i++;
	if (i==l) a[l-1]='\0';
	else {
		for(int j=i;j<l;j++)
			a[j]=a[j+1];
	}
	cout<<a<<endl;

	return 0;
}


#include<iostream>
#include<stdio.h>
#include<string.h>
#include<sstream>
#include<cmath>
#include<vector>
#include<set>
#include<algorithm>
#include<climits>
#include<stack>
#include<deque>
#define MAX 200000

typedef long long ll;
using namespace std;

int main(){

	string s;
	cin>>s;
	int i;
	for(i=0;i<s.size();i++){
		if (s[i]=='0'){
			i++;
			break;
		}
		cout<<s[i];
	}
	cout<<s.substr(i)<<endl;

	return 0;
}


#include<iostream>
#include<stdio.h>
#include<string.h>
#include<sstream>
#include<cmath>
#include<vector>
#include<set>
#include<algorithm>
#include<climits>
#include<stack>
#include<deque>
#define MAX 200000

typedef long long ll;
using namespace std;

int main(){

	string s, sf="";
	cin>>s;
	int i;
	for(i=0;i<s.size();i++){
		if (s[i]=='0'){
			i++;
			break;
		}
		sf.append(s.substr(i,1));
	}
	if (i==s.size()+1) cout<<s.substr(1)<<endl;
	else cout<<sf<<s.substr(i)<<endl;

	return 0;
}


#include<iostream>
#include<stdio.h>
#include<string.h>
#include<sstream>
#include<cmath>
#include<vector>
#include<set>
#include<algorithm>
#include<climits>
#include<stack>
#include<deque>
#define MAX 200000

typedef long long ll;
using namespace std;

int main(){

	string s, sf="";
	cin>>s;
	int i;
	for(i=0;i<s.size();i++){
		if (s[i]=='0'){
			i++;
			break;
		}
		sf.append(s.substr(i,1));
	}
	if (i==s.size()) cout<<s.substr(1)<<endl;
	else cout<<sf<<s.substr(i)<<endl;

	return 0;
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>
#include <queue>
#include <list>
#include <stack>
#include <deque>
#include <ctime>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <conio.h>
#include <iomanip>
#include <memory>

using namespace std;

#define rep( n ) for( int i = 0; i < n; ++i )
#define repw( n ) for( int j = 0; j < n; ++j )

struct maximum
{
    int max;
    int numb;
};

int main()
{
    string number;
    cin >> number;
    if( number.find( '0' ) == string::npos )
    {
        rep( number.length() - 1 ) cout <<  number[ i ];
        return 0;
    }
    vector< string > vstr;
    vector< int > vint;
    rep( number.length() )
    {
        if( number[ i ] == '0' )
        {
            string str = number;
            str.erase( i, 1 );
            vstr.push_back( str );
        }
    }
    number.clear();
    rep( vstr.size() )
    {
        int temp = atoi( vstr[ i ].c_str() );
        int a = 0;
        repw( vstr[ i ].length() )
        {
            if( vstr[ i ][ j ] == '1' )
            {
                a += (int)pow( 2., double( j ) );
            }
        }
        vint.push_back( a );
    }
    maximum maximum1;
    int temp = -INFINITY;
    rep( vint.size() )
    {
        if( temp > vint[ i ] )
        {
            temp = vint[ i ];
            maximum1.max = temp;
            maximum1.numb = i;
        }
    }
    cout << vstr[ maximum1.numb ];
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>
#include <queue>
#include <list>
#include <stack>
#include <deque>
#include <ctime>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <conio.h>
#include <iomanip>
#include <memory>

using namespace std;

#define rep( n ) for( int i = 0; i < n; ++i )
#define repw( n ) for( int j = 0; j < n; ++j )

struct maximum
{
    int max;
    int numb;
};

int main()
{
    string number;
    cin >> number;
    if( number.find( '0' ) == string::npos )
    {
        rep( number.length() - 1 ) cout <<  number[ i ];
        return 0;
    }
    vector< string > vstr;
    vector< unsigned short > vint;
    rep( number.length() )
    {
        if( number[ i ] == '0' )
        {
            string str = number;
            str.erase( i, 1 );
            vstr.push_back( str );
        }
    }
    number.clear();
    rep( vstr.size() )
    {
        int temp = atoi( vstr[ i ].c_str() );
        int a = 0;
        repw( vstr[ i ].length() )
        {
            if( vstr[ i ][ j ] == '1' )
            {
                a += (unsigned short)pow( 2., double( j ) );
            }
        }
        vint.push_back( a );
    }
    maximum maximum1;
    int temp = -INFINITY;
    rep( vint.size() )
    {
        if( temp > vint[ i ] )
        {
            temp = vint[ i ];
            maximum1.max = temp;
            maximum1.numb = i;
        }
    }
    cout << vstr[ maximum1.numb ];
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>
#include <queue>
#include <list>
#include <stack>
#include <deque>
#include <ctime>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <conio.h>
#include <iomanip>
#include <memory>

using namespace std;

#define rep( n ) for( int i = 0; i < n; ++i )
#define repw( n ) for( int j = 0; j < n; ++j )

struct maximum
{
    int max;
    int numb;
};

int main()
{
    string number;
    cin >> number;
    if( number.find( '0' ) == string::npos )
    {
        rep( number.length() - 1 ) cout <<  number[ i ];
        return 0;
    }
    vector< string > vstr;
    vector< int > vint;
    rep( number.length() )
    {
        if( number[ i ] == '0' )
        {
            string str = number;
            str.erase( i, 1 );
            vstr.push_back( str );
        }
    }
    rep( vstr.size() )
    {
        int temp = atoi( vstr[ i ].c_str() );
        int a = 0;
        repw( vstr[ i ].length() )
        {
            if( vstr[ i ][ j ] == '1' )
            {
                a += (int)pow( 2., double( j ) );
            }
        }
        vint.push_back( a );
    }
    maximum maximum1;
    int temp = -INFINITY;
    rep( vint.size() )
    {
        if( temp > vint[ i ] )
        {
            temp = vint[ i ];
            maximum1.max = temp;
            maximum1.numb = i;
        }
    }
    cout << vstr[ maximum1.numb ];
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>
#include <queue>
#include <list>
#include <stack>
#include <deque>
#include <ctime>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <conio.h>
#include <iomanip>
#include <memory>

using namespace std;

#define rep( n ) for( int i = 0; i < n; ++i )
#define repw( n ) for( int j = 0; j < n; ++j )

struct maximum
{
    int max;
    int numb;
};

int main()
{
    string number;
    cin >> number;
    if( number.find( '0' ) == string::npos )
    {
        rep( number.length() - 1 ) cout <<  number[ i ];
        return 0;
    }
    /*vector< string > vstr;
    vector< unsigned short > vint;
    rep( number.length() )
    {
        if( number[ i ] == '0' )
        {
            string str = number;
            str.erase( i, 1 );
            vstr.push_back( str );
        }
    }
    number.clear();
    rep( vstr.size() )
    {
        int temp = atoi( vstr[ i ].c_str() );
        int a = 0;
        repw( vstr[ i ].length() )
        {
            if( vstr[ i ][ j ] == '1' )
            {
                a += (unsigned short)pow( 2., double( j ) );
            }
        }
        vint.push_back( a );
    }
    maximum maximum1;
    int temp = -INFINITY;
    rep( vint.size() )
    {
        if( temp > vint[ i ] )
        {
            temp = vint[ i ];
            maximum1.max = temp;
            maximum1.numb = i;
        }
    }
    cout << vstr[ maximum1.numb ];*/
    string str = number.erase( number.find( '0' ), 1 );
    cout << str;
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>
#include <queue>
#include <list>
#include <stack>
#include <deque>
#include <ctime>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <conio.h>
#include <iomanip>
#include <memory>

using namespace std;

#define rep( n ) for( int i = 0; i < n; ++i )
#define repw( n ) for( int j = 0; j < n; ++j )

struct maximum
{
    int max;
    int numb;
};

int main()
{
    string number;
    cin >> number;
    if( number.find( '0' ) == string::npos )
    {
        rep( number.length() - 1 ) cout <<  number[ i ];
        return 0;
    }
    vector< string > vstr;
    vector< int > vint;
    rep( number.length() )
    {
        if( number[ i ] == '0' )
        {
            string str( number );
            str.erase( i, 1 );
            vstr.push_back( str );
        }
    }
    rep( vstr.size() )
    {
        int temp = atoi( vstr[ i ].c_str() );
        double a = 0;
        repw( vstr[ i ].length() )
        {
            if( vstr[ i ][ j ] == '1' )
            {
                a += pow( 2., double( j ) );
            }
        }
        vint.push_back( a );
    }
    maximum maximum1;
    int temp = -1;
    rep( vint.size() )
    {
        if( temp > vint[ i ] )
        {
            temp = vint[ i ];
            maximum1.max = temp;
            maximum1.numb = i;
        }
    }
    cout << vstr[ maximum1.numb ];
}


#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>
#include <queue>
#include <list>
#include <stack>
#include <deque>
#include <ctime>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <conio.h>
#include <iomanip>
#include <memory>

using namespace std;

#define rep( n ) for( int i = 0; i < n; ++i )
#define repw( n ) for( int j = 0; j < n; ++j )

int main()
{
    string number;
    cin >> number;
    if( number.find( '0' ) == string::npos )
    {
        rep( number.length() - 1 ) cout <<  number[ i ];
        return 0;
    }
    string str = number.erase( number.find( '0' ), 1 );
    cout << str;
}


#include<stdio.h>

char arr[100000]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
        i++;
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0')
        {
            break;
        }
    }
    for( k=0; k<j; k++)
        printf("%c", arr[k]);
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>

char arr[100005]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
    {
        i++;
        if( i==10)
            break;
    }
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0')
        {
            break;
        }
    }
    if( j==i)
        j-=2;
    for( k=0; k<j; k++)
    {
            printf("%c", arr[k]);
    }
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>

char arr[100000]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
        i++;
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0' && j!=0)
        {
            break;
        }
    }
    for( k=0; k<j; k++)
        printf("%c", arr[k]);
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>

char arr[100000]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
        i++;
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0')
        {
            break;
        }
    }
    if( j==i)
        j--;
    for( k=0; k<j; k++)
    {
        if( k==0)
            if( arr[0]!='0')
                printf("%c", arr[k]);
            else
                ;
        else
            printf("%c", arr[k]);
    }
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>

char arr[100005]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
        i++;
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0')
        {
            break;
        }
    }
    if( j==i)
        j--;
    for( k=0; k<j; k++)
    {
            printf("%c", arr[k]);
    }
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>

char arr[100000]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
        i++;
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0' && j!=0)
        {
            break;
        }
    }
    for( k=0; k<j; k++)
    {
        if( k==0)
            if( arr[0]!='0')
                printf("%c", arr[k]);
            else
                ;
        else
            printf("%c", arr[k]);
    }
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>

char arr[100005]={0};

int main( void)
{
    int i=0, j, k;
    while( scanf("%c", &arr[i]) != EOF )
    {
        i++;
//      if( i==10)
//          break;
    }
    for( j=0; j<i; j++)
    {
        if( arr[j]=='0')
        {
            break;
        }
    }
    if( j==i)
        j-=2;
    for( k=0; k<j; k++)
    {
            printf("%c", arr[k]);
    }
    for( k=j+1; k<i; k++)
        printf("%c", arr[k]);
    return 0;
}


#include<stdio.h>
#include<string.h>

int main()
{
int i,j,pos=-1;
char a[100001];
scanf("%s",a);
for(i=0;i<strlen(a);i++)
    {
    if(a[i]=='0')
        {
                pos=i;
                break;
        }
    }
if(pos==-1)
    {
    printf("%s",a+1);
    }
else
    {
    for(i=0;i<strlen(a);i++)
        {
        if(i==pos)
            continue;
        printf("%c",a[i]);
        }
    }
return 0;
}


#include<iostream>
#include<string>
using namespace std;
int main()
{
int i,j,pos=-1;
string a;
cin>>a;
for(i=0;i<a.size();i++)
    {
    if(a[i]=='0')
        {
        pos=i;
        break;
    }
    }
if(pos==-1)
    {
    pos=0;
    }
for(i=0;i<a.size();i++)
        {
        if(i==pos)
            continue;
       cout<<a[i];
        }
return 0;
}


#include<stdio.h>
#include<string.h>

int main()
{
int i,j,pos=-1;
char a[100001];
scanf("%s",a);
for(i=strlen(a)-1;i>=0;i--)
    {
    if(a[i]=='0')
        pos=i;
    }
if(pos==-1)
    {
    printf("%s",a+1);
    }
else
    {
    for(i=0;i<strlen(a);i++)
        {
        if(i==pos)
            continue;
        printf("%c",a[i]);
        }
    }
return 0;
}


#include<iostream>
#include<string>
using namespace std;
int main()
{
int i,j,pos=-1;
string a;
cin>>a;
for(i=0;i<a.size();i++)
    {
    if(a[i]=='0')
        {
        pos=i;
        break;
    }
    }
if(pos==-1)
    {
    pos=0;
    }
for(i=0;i<a.size();i++)
        {
        if(i==pos)
            continue;
        printf("%c",a[i]);
        }
return 0;
}


#include<stdio.h>
#include<string.h>

int main()
{
int i,j,pos=-1;
char a[100001];
scanf("%s",a);
for(i=0;i<strlen(a);i++)
    {
    if(a[i]=='0')
        {
        pos=i;
        break;
    }
    }
if(pos==-1)
    {
    pos=0;
    }
for(i=0;i<strlen(a);i++)
        {
        if(i==pos)
            continue;
        printf("%c",a[i]);
        }
return 0;
}


#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

int main() {
	char temp[int(10E5+2)];
	bool flag = false;
	scanf(" %s", temp);
	int removed = -1;
	for(int i = 0; i < strlen(temp); ++i) {
		if(temp[i] == '0') {
			removed = i;
			break;
		}
	}
	if(removed == -1) removed = 0;
	for(int i = 0; i < strlen(temp); ++i) {
		if(i != removed) {
			printf("%c", temp[i]);
		}
	}
	printf("\n");
	return 0;
}


#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

int main() {
	bool flag = false;
	char temp;
	while(scanf(" %c", &temp) != EOF) {
		if(!flag && temp == '0') {
			flag = true;
		} else {
			printf("%c", temp);
		}
	}
	printf("\n");
	return 0;
}


#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

int main() {
	char temp[int(10E5+10)];
	bool flag = false;
	for(int i = 0; scanf(" %c", &temp[i]) != EOF; ++i)
		;
	int removed = -1;
	for(int i = 0; i < strlen(temp); ++i) {
		if(temp[i] == '0') {
			removed = i;
			break;
		}
	}
	if(removed == -1) removed = 0;
	for(int i = 0; i < strlen(temp); ++i) {
		if(i != removed) {
			printf("%c", temp[i]);
		}
	}
	printf("\n");
	return 0;
}


#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

char temp[int(10E5+10)];

int main() {
	int size = 0;
	bool flag = false;
	for(size = 0; scanf(" %c", &temp[size]) != EOF; ++size)
		;
	int removed = -1;
	for(int i = 0; i < size; ++i) {
		if(temp[i] == '0') {
			removed = i;
			break;
		}
	}
	if(removed == -1) removed = 0;
	for(int i = 0; i < size; ++i) {
		if(i != removed && (temp[i] == '0' || temp[i] == '1')) {
			printf("%c", temp[i]);
		}
	}
	printf("\n");
	return 0;
}


#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

int main() {
	char temp;
	bool flag = false;
	while(scanf("%c", &temp) != EOF) {
		if(!flag && temp == '0') {
			flag = true;
		} else if(temp == '0' || temp == '1'){
			printf("%c", temp);
		} else if(temp == '\n') {
			break;
		}
	}
	printf("\n");
	return 0;
}


#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

int main() {
	char temp[int(10E5+10)];
	bool flag = false;
	for(int i = 0; scanf(" %c", &temp[i]) != EOF && temp[i] != '\n'; ++i)
		;
	int removed = -1;
	for(int i = 0; i < strlen(temp); ++i) {
		if(temp[i] == '0') {
			removed = i;
			break;
		}
	}
	if(removed == -1) removed = 0;
	for(int i = 0; i < strlen(temp); ++i) {
		if(i != removed && (temp[i] == '0' || temp[i] == '1')) {
			printf("%c", temp[i]);
		}
	}
	printf("\n");
	return 0;
}


#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
using namespace std;

char num[100005];
int main()
{
	int a;
	int i,n,flag;
	while (cin >> num)
	{
		n=strlen(num);
		for(i=0; i<n; i++)
		{
			if(num[i] == '0')
			{
				flag=i;
				break;
			}
		}
		for(i=0;i<n; i++)
		{
			if (i == flag) continue;
			else printf("%c",num[i]);
		}
		printf("\n");
	}
	return 0;
}