#include <iostream>
#include <vector>
#include <string>

using namespace std;

void solve_only_ones(int n, const string& s) {
    vector<int> fence1, fence2;
    bool turn_first = true; // Флаг, който определя в коя ограда да отиде единицата

    for (int i = 0; i < n; ++i) {
        if (s[i] == '1') {
            if (turn_first) {
                fence1.push_back(i);
            } else {
                fence2.push_back(i);
            }
            turn_first = !turn_first; // Сменяме реда за следващата единица
        }
    }

    // Ако общият брой на единиците е нечетен, първата ограда ще има един елемент повече.
    // За да са идентични и с равна дължина, премахваме последната добавена единица от fence1.
    if (fence1.size() > fence2.size()) {
        fence1.pop_back();
    }

    int k = fence1.size();
    
    // Извеждаме дължината на всяка ограда
    cout << k << "\n";
    
    // Извеждаме индексите за първата ограда
    for (int i = 0; i < k; ++i) {
        cout << fence1[i] << (i == k - 1 ? "" : " ");
    }
    cout << "\n";
    
    // Извеждаме индексите за втората ограда
    for (int i = 0; i < k; ++i) {
        cout << fence2[i] << (i == k - 1 ? "" : " ");
    }
    cout << "\n";
}

int main() {
    // Оптимизация на входа/изхода
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL);
    
    int n, g;
    if (cin >> n >> g) {
        string s;
        cin >> s;
        solve_only_ones(n, s);
    }
    
    return 0;
}
