#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
queue<int>rele;
queue<int>bune;
vector<int>vec[200005];
int main()
{
int n,i,j,k,l,t,op,a,b,m,x,st,dr,v,c,curr;
ios_base::sync_with_stdio(false);
cin.tie(NULL);
t=1;
string s;
cin>>s;
n=s.size();
int cnt=0,imp=0;
for(i=0; i<n; i++)
{
if(s[i]=='0')
{
if(rele.size()==0)
{
cnt++;
vec[cnt].push_back(i+1);
bune.push(cnt);
}
else
{
curr=rele.front();
rele.pop();
vec[curr].push_back(i+1);
bune.push(curr);
}
}
else
{
if(bune.size()==0)
{
imp=1;
}
else
{
curr=bune.front();
bune.pop();
vec[curr].push_back(i+1);
rele.push(curr);
}
}
}
if(rele.size())
{
imp=1;
}
if(imp==1)
{
cout<<-1;
}
else
{
cout<<cnt<<endl;
for(i=1;i<=cnt;i++)
{
cout<<vec[i].size()<<" ";
for(j=0;j<vec[i].size();j++)
{
cout<<vec[i][j]<<" ";
}
cout<<'\n';
}
}
return 0;
}
112. Path Sum | 1556A - A Variety of Operations |
136. Single Number | 169. Majority Element |
119. Pascal's Triangle II | 409. Longest Palindrome |
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |