#include <iostream>
#include <sstream>
#include <locale>
#include <climits>

struct my_nump : std::numpunct<char> {
    std::string do_grouping() const { return "\3"; }
};

std::string bigNumberWithCommas(unsigned long long n) {
    std::ostringstream s;
    if(n > 9999)
        s.imbue(std::locale(s.getloc(), new my_nump));
    s << n;
    return s.str();
}

int main()
{
    std::cout << bigNumberWithCommas(LLONG_MAX) << '\n'
              << bigNumberWithCommas(1234) << '\n';
}
