#include <iostream>
#include <locale>
#include <sstream>
using namespace std;
struct thousand_formater : numpunct<char>
{
// separate with spaces
char do_thousands_sep() const { return '.'; }
// groups of 1 digit
string do_grouping() const { return "\03"; }
};
int main()
{
cout.imbue(locale(cout.getloc(), new thousand_formater));
cout << 110 << endl;
cout << 1500 << endl;
cout << 13200 << endl;
cout << 500000 << endl;
cout << 99999999 << endl;
// string
stringstream ss;
ss.imbue(locale(cout.getloc(), new thousand_formater));
ss << 89898989;
string resultado = ss.str();
cout << resultado << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bG9jYWxlPgojaW5jbHVkZSA8c3N0cmVhbT4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnN0cnVjdCB0aG91c2FuZF9mb3JtYXRlciA6IG51bXB1bmN0PGNoYXI+CnsKCS8vIHNlcGFyYXRlIHdpdGggc3BhY2VzCiAgICBjaGFyIGRvX3Rob3VzYW5kc19zZXAoKSBjb25zdCB7IHJldHVybiAnLic7ICB9CiAKICAgIC8vIGdyb3VwcyBvZiAxIGRpZ2l0CiAgICBzdHJpbmcgZG9fZ3JvdXBpbmcoKSBjb25zdCB7IHJldHVybiAiXDAzIjsgfQp9OwogCmludCBtYWluKCkKewogICAgY291dC5pbWJ1ZShsb2NhbGUoY291dC5nZXRsb2MoKSwgbmV3IHRob3VzYW5kX2Zvcm1hdGVyKSk7CiAKICAgIGNvdXQgPDwgMTEwIDw8IGVuZGw7CiAgICBjb3V0IDw8IDE1MDAgPDwgZW5kbDsKICAgIGNvdXQgPDwgMTMyMDAgPDwgZW5kbDsKICAgIGNvdXQgPDwgNTAwMDAwIDw8IGVuZGw7CiAgICBjb3V0IDw8IDk5OTk5OTk5IDw8IGVuZGw7CiAKICAgIC8vIHN0cmluZwogICAgc3RyaW5nc3RyZWFtIHNzOwogICAgc3MuaW1idWUobG9jYWxlKGNvdXQuZ2V0bG9jKCksIG5ldyB0aG91c2FuZF9mb3JtYXRlcikpOwogICAgc3MgPDwgODk4OTg5ODk7CiAgICAKICAgIHN0cmluZyByZXN1bHRhZG8gPSBzcy5zdHIoKTsKICAgIAogICAgY291dCA8PCByZXN1bHRhZG8gPDwgZW5kbDsKfQ==