#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <climits>
using namespace std;
// 判断表达式是否合法
bool isLegalExpression(const string& expr) {
if (expr.empty()) return false;
if (expr[0] == '0') return false; // 前导零
for (size_t i = 0; i < expr.size(); ++i) {
if (expr[i] == '0' && (i == 0 || expr[i-1] == '+')) return false; // 前导零
if (expr[i] == '+' && (i == 0 || expr[i-1] == '+')) return false; // 连续加号
}
return true;
}
// 计算表达式的值
int evaluateExpression(const string& expr) {
int sum = 0;
int current = 0;
for (char c : expr) {
if (c == '+') {
sum += current;
current = 0;
} else {
current = current * 10 + (c - '0');
}
}
sum += current;
return sum;
}
// 生成所有可能的加号插入方案
void generateExpressions(const string& num, int index, string current, vector<string>& results) {
if (index == num.size()) {
if (isLegalExpression(current)) {
results.push_back(current);
}
return;
}
// 不加加号
generateExpressions(num, index + 1, current + num[index], results);
// 加加号
generateExpressions(num, index + 1, current + '+' + num[index], results);
}
int main() {
string num;
cin >> num;
vector<string> expressions;
generateExpressions(num, 0, "", expressions);
int count = expressions.size();
int maxSum = INT_MIN;
int minSum = INT_MAX;
int totalSum = 0;
for (const string& expr : expressions) {
int sum = evaluateExpression(expr);
if (sum > maxSum) maxSum = sum;
if (sum < minSum) minSum = sum;
totalSum += sum;
}
cout << count << endl;
cout << maxSum << " " << minSum << " " << totalSum << endl;
return 0;
}