#include<iostream>
#include<cmath>
#include<algorithm>
#include<iomanip>
#include<climits>
#include<numeric>
#include<set>
#include<sstream>
#include<map>
#include<vector>
#include<string>
#include<regex>
using namespace std;
vector<string> split(string haystack, string needle) {
vector<string> result;
int start_pos = 0;
int found_pos = haystack.find(needle, start_pos);
while (found_pos != string::npos) {
int count = found_pos - start_pos;
string token = haystack.substr(start_pos, count);
if (!token.empty()) {
result.push_back(token);
}
start_pos = found_pos + needle.length();
found_pos = haystack.find(needle, start_pos);
}
string token = haystack.substr(start_pos, haystack.length()-start_pos);
if (!token.empty()) {
result.push_back(token);
}
return result;
}
string nameConvert(const string& name) {
const string DELIMITER = " ";
stringstream builder;
auto parts = split(name, DELIMITER);
for (auto part : parts) {
part[0] = toupper(part[0]);
transform(part.begin()+1, part.end(),part.begin()+1, ::tolower);
builder << part << DELIMITER;
}
return builder.str();
}
string dateConvert(const string& date) {
const string DELIMITER = "/";
stringstream builder;
auto parts = split(date, DELIMITER);
builder << setw(2) << setfill('0') << parts[0] << DELIMITER;
builder << setw(2) << setfill('0') << parts[1] << DELIMITER;
builder << parts[2];
return builder.str();
}
int main() {
string s;cin >> s;
regex re("\\d+");
sregex_iterator it(s.begin(), s.end(), re);
sregex_iterator end;
for (;it != end;it++) {
string number = it->str();
number = regex_replace(number, regex("^0+(?!$)"), "");
cout << number << endl;
//number = regex_replace(number, regex("^0+"), "");
//if (number.empty()) number = "0";
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNtYXRoPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvbWFuaXA+CiNpbmNsdWRlPGNsaW1pdHM+CiNpbmNsdWRlPG51bWVyaWM+CiNpbmNsdWRlPHNldD4KI2luY2x1ZGU8c3N0cmVhbT4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8cmVnZXg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHN0cmluZz4gc3BsaXQoc3RyaW5nIGhheXN0YWNrLCBzdHJpbmcgbmVlZGxlKSB7Cgl2ZWN0b3I8c3RyaW5nPiByZXN1bHQ7CglpbnQgc3RhcnRfcG9zID0gMDsKCWludCBmb3VuZF9wb3MgPSBoYXlzdGFjay5maW5kKG5lZWRsZSwgc3RhcnRfcG9zKTsKCXdoaWxlIChmb3VuZF9wb3MgIT0gc3RyaW5nOjpucG9zKSB7CgkJaW50IGNvdW50ID0gZm91bmRfcG9zIC0gc3RhcnRfcG9zOwoJCXN0cmluZyB0b2tlbiA9IGhheXN0YWNrLnN1YnN0cihzdGFydF9wb3MsIGNvdW50KTsKCQlpZiAoIXRva2VuLmVtcHR5KCkpIHsKCQkJcmVzdWx0LnB1c2hfYmFjayh0b2tlbik7CgkJfQoJCXN0YXJ0X3BvcyA9IGZvdW5kX3BvcyArIG5lZWRsZS5sZW5ndGgoKTsKCQlmb3VuZF9wb3MgPSBoYXlzdGFjay5maW5kKG5lZWRsZSwgc3RhcnRfcG9zKTsKCX0KCXN0cmluZyB0b2tlbiA9IGhheXN0YWNrLnN1YnN0cihzdGFydF9wb3MsIGhheXN0YWNrLmxlbmd0aCgpLXN0YXJ0X3Bvcyk7CglpZiAoIXRva2VuLmVtcHR5KCkpIHsKCQlyZXN1bHQucHVzaF9iYWNrKHRva2VuKTsKCX0KCXJldHVybiByZXN1bHQ7Cn0Kc3RyaW5nIG5hbWVDb252ZXJ0KGNvbnN0IHN0cmluZyYgbmFtZSkgewoJY29uc3Qgc3RyaW5nIERFTElNSVRFUiA9ICIgIjsKCXN0cmluZ3N0cmVhbSBidWlsZGVyOwoJYXV0byBwYXJ0cyA9IHNwbGl0KG5hbWUsIERFTElNSVRFUik7Cglmb3IgKGF1dG8gcGFydCA6IHBhcnRzKSB7CgkJcGFydFswXSA9IHRvdXBwZXIocGFydFswXSk7CgkJdHJhbnNmb3JtKHBhcnQuYmVnaW4oKSsxLCBwYXJ0LmVuZCgpLHBhcnQuYmVnaW4oKSsxLCA6OnRvbG93ZXIpOwoJCWJ1aWxkZXIgPDwgcGFydCA8PCBERUxJTUlURVI7Cgl9CglyZXR1cm4gYnVpbGRlci5zdHIoKTsKfQpzdHJpbmcgZGF0ZUNvbnZlcnQoY29uc3Qgc3RyaW5nJiBkYXRlKSB7Cgljb25zdCBzdHJpbmcgREVMSU1JVEVSID0gIi8iOwoJc3RyaW5nc3RyZWFtIGJ1aWxkZXI7CglhdXRvIHBhcnRzID0gc3BsaXQoZGF0ZSwgREVMSU1JVEVSKTsKCWJ1aWxkZXIgPDwgc2V0dygyKSA8PCBzZXRmaWxsKCcwJykgPDwgcGFydHNbMF0gPDwgREVMSU1JVEVSOwoJYnVpbGRlciA8PCBzZXR3KDIpIDw8IHNldGZpbGwoJzAnKSA8PCBwYXJ0c1sxXSA8PCBERUxJTUlURVI7CglidWlsZGVyIDw8IHBhcnRzWzJdOwoJcmV0dXJuIGJ1aWxkZXIuc3RyKCk7Cgp9CgppbnQgbWFpbigpIHsKCXN0cmluZyBzO2NpbiA+PiBzOwoJcmVnZXggcmUoIlxcZCsiKTsKCXNyZWdleF9pdGVyYXRvciBpdChzLmJlZ2luKCksIHMuZW5kKCksIHJlKTsKCXNyZWdleF9pdGVyYXRvciBlbmQ7CgoJZm9yICg7aXQgIT0gZW5kO2l0KyspIHsKCQlzdHJpbmcgbnVtYmVyID0gaXQtPnN0cigpOwoJCW51bWJlciA9IHJlZ2V4X3JlcGxhY2UobnVtYmVyLCByZWdleCgiXjArKD8hJCkiKSwgIiIpOwoJCWNvdXQgPDwgbnVtYmVyIDw8IGVuZGw7CgkJLy9udW1iZXIgPSByZWdleF9yZXBsYWNlKG51bWJlciwgcmVnZXgoIl4wKyIpLCAiIik7CgkJLy9pZiAobnVtYmVyLmVtcHR5KCkpIG51bWJlciA9ICIwIjsKCX0KfQoK