#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
size_t MkTimestamp(char *output, size_t size)
{
milliseconds ms = duration_cast<milliseconds>(system_clock::now().time_since_epoch());
seconds s = duration_cast<seconds>(ms);
time_t ctime = (time_t) s.count();
tm components;
size_t return_value = 0;
if (!localtime_r(&ctime, &components)) return 0;
if ((return_value = strftime(output, size, "%F %T:XXX", &components)) == 0) return 0;
int ms_d1 = ms.count() / 100 % 10, ms_d2 = ms.count() / 10 % 10, ms_d3 = ms.count() % 10;
output[return_value - 3] = ms_d1 + '0';
output[return_value - 2] = ms_d2 + '0';
output[return_value - 1] = ms_d3 + '0';
return return_value;
}
int main() {
char buffer[64];
string timestamp(buffer, MkTimestamp(buffer, sizeof buffer));
cout << timestamp << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CgpzaXplX3QgTWtUaW1lc3RhbXAoY2hhciAqb3V0cHV0LCBzaXplX3Qgc2l6ZSkKewoJbWlsbGlzZWNvbmRzIG1zID0gZHVyYXRpb25fY2FzdDxtaWxsaXNlY29uZHM+KHN5c3RlbV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpKTsKCXNlY29uZHMgcyA9IGR1cmF0aW9uX2Nhc3Q8c2Vjb25kcz4obXMpOwoJdGltZV90IGN0aW1lID0gKHRpbWVfdCkgcy5jb3VudCgpOwoJdG0gY29tcG9uZW50czsKCXNpemVfdCByZXR1cm5fdmFsdWUgPSAwOwoJCglpZiAoIWxvY2FsdGltZV9yKCZjdGltZSwgJmNvbXBvbmVudHMpKSByZXR1cm4gMDsKCWlmICgocmV0dXJuX3ZhbHVlID0gc3RyZnRpbWUob3V0cHV0LCBzaXplLCAiJUYgJVQ6WFhYIiwgJmNvbXBvbmVudHMpKSA9PSAwKSByZXR1cm4gMDsKCQoJaW50IG1zX2QxID0gbXMuY291bnQoKSAvIDEwMCAlIDEwLCBtc19kMiA9IG1zLmNvdW50KCkgLyAxMCAlIDEwLCBtc19kMyA9IG1zLmNvdW50KCkgJSAxMDsKCW91dHB1dFtyZXR1cm5fdmFsdWUgLSAzXSA9IG1zX2QxICsgJzAnOwoJb3V0cHV0W3JldHVybl92YWx1ZSAtIDJdID0gbXNfZDIgKyAnMCc7CglvdXRwdXRbcmV0dXJuX3ZhbHVlIC0gMV0gPSBtc19kMyArICcwJzsKCXJldHVybiByZXR1cm5fdmFsdWU7Cn0KCmludCBtYWluKCkgewoJY2hhciBidWZmZXJbNjRdOwoJc3RyaW5nIHRpbWVzdGFtcChidWZmZXIsIE1rVGltZXN0YW1wKGJ1ZmZlciwgc2l6ZW9mIGJ1ZmZlcikpOwoJY291dCA8PCB0aW1lc3RhbXAgPDwgZW5kbDsKCXJldHVybiAwOwp9