#include<iostream>#include<string>#include<string.h>#include<stdlib.h>using namespace std;int cmp(string s1, string s2){if(s1.compare("") == 0){return -1;}int index1, index2;int len1 = s1.length();int len2 = s2.length();for(index1=0;index1<len1;index1++){if(s1[index1] != '0')break;}for(index2=0;index2<len2;index2++){if(s2[index2] != '0')break;}if((len1-index1) != (len2-index2)){return (len1-index1)-(len2-index2);}if(s1.substr(index1, len1-index1+1).compare(s2.substr(index2, len2-index2)) == 0){return 0;}while(index1 != len1){if(s1[index1] != s2[index2]){return s1[index1] - s2[index2];}index1++;index2++;}return 0;}int main(){int minEnd[91];string str;cin >> str;while(str.compare("0") != 0){minEnd[0] = 0;int len = str.length();for(int i=1;i<=len;i++){for(int j=i-1;j>=0;j--){if(cmp(str.substr(minEnd[j], j-minEnd[j]), str.substr(j, i-j)) < 0){minEnd[i] = j;break;}}}int maxHead[91];int start = -1;for(int i=minEnd[len]-1;i>=0;i--){if(str[i] != '0'){start = i;break;}else{maxHead[i] = len;}}maxHead[minEnd[len]] = len;for(int j=start;j>=0;j--){for(int i=minEnd[len];i>=j+1;i--){if(cmp(str.substr(j, i-j), str.substr(i, maxHead[i]-i)) < 0){maxHead[j] = i;break;}}}start = 0;while(true){cout << str.substr(start, maxHead[start]-start);if(maxHead[start] == len){break;}else{cout << ",";start = maxHead[start];}}cout << endl; cin >> str;}}


