#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 将二进制字符串转换为十进制数
long long binaryToDecimal(const string& binaryStr) {
long long result = 0;
for (char c : binaryStr) {
result = result * 2 + (c - '0');
}
return result;
}
int main() {
string s;
cin >> s;
vector<long long> result;
int currentLength = 1; // 当前要取的子串长度
int index = 0; // 当前在字符串中的位置
// 依次取不同长度的子串
while (index + currentLength <= s.size()) {
// 取出当前长度的子串
string sub = s.substr(index, currentLength);
// 转换为十进制数
long long num = binaryToDecimal(sub);
result.push_back(num);
// 更新位置和长度
index += currentLength;
currentLength++;
// 如果长度超过10,重新从1开始
if (currentLength > 10) {
currentLength = 1;
}
}
// 输出结果
cout << result.size() << endl;
for (int i = 0; i < result.size(); i++) {
cout << result[i];
if (i != result.size() - 1) {
cout << " ";
}
}
cout << endl;
return 0;
}