#include <algorithm>
#include <iostream>
#include <regex>
#include <string>
#include <vector>
using namespace std;
auto parse(const string& input, const string& delimiter) {
const regex re("([^" + delimiter + "]+)" + delimiter + '?');
return vector<string>(sregex_token_iterator(input.begin(), input.end(), re, 1), sregex_token_iterator());
}
int main() {
const string str("0,1,2,4444444444;5,6,7,8888888888;.9,10,11,12121212;.");
vector<vector<vector<long long>>> foo;
for (auto& i : parse(str, "\\.")) {
foo.resize(foo.size() + 1);
for (auto& j : parse(i, ";")) {
foo.back().resize(foo.back().size() + 1);
for (auto& k : parse(j, ",")) {
foo.back().back().push_back(stoll(k));
}
}
}
for (auto& i : foo) {
for (auto& j : i) {
for (auto& k : j) {
cout << k << endl;
}
cout << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYXV0byBwYXJzZShjb25zdCBzdHJpbmcmIGlucHV0LCBjb25zdCBzdHJpbmcmIGRlbGltaXRlcikgewoJY29uc3QgcmVnZXggcmUoIihbXiIgKyBkZWxpbWl0ZXIgKyAiXSspIiArIGRlbGltaXRlciArICc/Jyk7CgoJcmV0dXJuIHZlY3RvcjxzdHJpbmc+KHNyZWdleF90b2tlbl9pdGVyYXRvcihpbnB1dC5iZWdpbigpLCBpbnB1dC5lbmQoKSwgcmUsIDEpLCBzcmVnZXhfdG9rZW5faXRlcmF0b3IoKSk7Cn0KCmludCBtYWluKCkgewoJY29uc3Qgc3RyaW5nIHN0cigiMCwxLDIsNDQ0NDQ0NDQ0NDs1LDYsNyw4ODg4ODg4ODg4Oy45LDEwLDExLDEyMTIxMjEyOy4iKTsKCXZlY3Rvcjx2ZWN0b3I8dmVjdG9yPGxvbmcgbG9uZz4+PiBmb287CgoJZm9yIChhdXRvJiBpIDogcGFyc2Uoc3RyLCAiXFwuIikpIHsKCQlmb28ucmVzaXplKGZvby5zaXplKCkgKyAxKTsKCQlmb3IgKGF1dG8mIGogOiBwYXJzZShpLCAiOyIpKSB7CgkJCWZvby5iYWNrKCkucmVzaXplKGZvby5iYWNrKCkuc2l6ZSgpICsgMSk7CgkJCWZvciAoYXV0byYgayA6IHBhcnNlKGosICIsIikpIHsKCQkJCWZvby5iYWNrKCkuYmFjaygpLnB1c2hfYmFjayhzdG9sbChrKSk7CgkJCX0KCQl9Cgl9CgoJZm9yIChhdXRvJiBpIDogZm9vKSB7CgkJZm9yIChhdXRvJiBqIDogaSkgewoJCQlmb3IgKGF1dG8mIGsgOiBqKSB7CgkJCQljb3V0IDw8IGsgPDwgZW5kbDsKCQkJfQoJCQljb3V0IDw8IGVuZGw7CgkJfQoJfQoKCXJldHVybiAwOwp9