#include <iostream>
#include <tuple>
using namespace std;
#define int64 long long
const long double log[6] = {0.0, 0.0, 0.6931471805599453094172, 1.0986122886681096913952, 0.0, 1.6094379124341003746007};
const long double eps = 0.00000000001;
int number = 0;
tuple<int64, int64, int64, int64> solve(long double mx) {
number++;
int64 rez = 0;
int nr2 = 0, nr3 = 0, nr5 = 0;
int here2, here3, here5 = 0;
for (long double exp5 = 0.0; exp5 < mx; exp5 += log[5], here5++) {
here3 = 0;
for (long double exp3 = 0.0; exp3 + exp5 < mx; exp3 += log[3], here3++) {
here2 = int((mx - exp5 - exp3) / log[2] + eps);
nr3 += here3 * (here2 + 1);
nr5 += here5 * (here2 + 1);
nr2 += here2 * (here2 + 1) / 2;
rez += here2 + 1;
}
}
return make_tuple(rez, nr2, nr3, nr5);
}
tuple<long double, int64, int64, int64> findNumber(int64 n, long double rez = 0.0) {
long double p = 1.0;
int64 nr;
int64 n2, n3, n5;
while (1) {
tie(nr, n2, n3, n5) = solve(rez + p + eps);
if (nr <= n) {
rez += p;
p *= 2.0;
} else {
p /= 2.0;
break;
}
}
while (p > eps) {
tie(nr, n2, n3, n5) = solve(rez + p + eps);
if (nr <= n) {
rez += p;
}
p /= 2.0;
}
tie(nr, n2, n3, n5) = solve(rez);
return make_tuple(rez, n2, n3, n5);
}
int main() {
int64 n;
// cin >> n;
n = 100000000LL;
int64 n2a, n3a, n5a;
int64 n2b, n3b, n5b;
long double rez;
tie(rez, n2b, n3b, n5b) = findNumber(n - 1);
tie(rez, n2a, n3a, n5a) = findNumber(n, rez - eps);
// the number is 2^ * 3^ * 4^
cout << n2a - n2b << '\t' << n3a - n3b << '\t' << n5a - n5b << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHVwbGU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludDY0IGxvbmcgbG9uZwoKY29uc3QgbG9uZyBkb3VibGUgbG9nWzZdID0gezAuMCwgMC4wLCAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIsIDEuMDk4NjEyMjg4NjY4MTA5NjkxMzk1MiwgMC4wLCAxLjYwOTQzNzkxMjQzNDEwMDM3NDYwMDd9Owpjb25zdCBsb25nIGRvdWJsZSBlcHMgPSAwLjAwMDAwMDAwMDAxOyAKCmludCBudW1iZXIgPSAwOwoKdHVwbGU8aW50NjQsIGludDY0LCBpbnQ2NCwgaW50NjQ+ICBzb2x2ZShsb25nIGRvdWJsZSBteCkgewoJbnVtYmVyKys7CglpbnQ2NCByZXogPSAwOwoJaW50IG5yMiA9IDAsIG5yMyA9IDAsIG5yNSA9IDA7CglpbnQgaGVyZTIsIGhlcmUzLCBoZXJlNSA9IDA7Cglmb3IgKGxvbmcgZG91YmxlIGV4cDUgPSAwLjA7IGV4cDUgPCBteDsgZXhwNSArPSBsb2dbNV0sIGhlcmU1KyspIHsKCQloZXJlMyA9IDA7CgkJZm9yIChsb25nIGRvdWJsZSBleHAzID0gMC4wOyBleHAzICsgZXhwNSA8IG14OyBleHAzICs9IGxvZ1szXSwgaGVyZTMrKykgewoJCQloZXJlMiA9IGludCgobXggLSBleHA1IC0gZXhwMykgLyBsb2dbMl0gKyBlcHMpOwoJCQlucjMgKz0gaGVyZTMgKiAoaGVyZTIgKyAxKTsKCQkJbnI1ICs9IGhlcmU1ICogKGhlcmUyICsgMSk7CgkJCW5yMiArPSBoZXJlMiAqIChoZXJlMiArIDEpIC8gMjsKCQkJcmV6ICs9IGhlcmUyICsgMTsKCQl9CgkJCgl9CglyZXR1cm4gbWFrZV90dXBsZShyZXosIG5yMiwgbnIzLCBucjUpOwp9Cgp0dXBsZTxsb25nIGRvdWJsZSwgaW50NjQsIGludDY0LCBpbnQ2ND4gZmluZE51bWJlcihpbnQ2NCBuLCBsb25nIGRvdWJsZSByZXogPSAwLjApIHsKCWxvbmcgZG91YmxlIHAgPSAxLjA7CglpbnQ2NCBucjsKCWludDY0IG4yLCBuMywgbjU7CiAgICAKCXdoaWxlICgxKSB7CiAgCQl0aWUobnIsIG4yLCBuMywgbjUpID0gc29sdmUocmV6ICsgcCArIGVwcyk7CiAJCWlmIChuciA8PSBuKSB7CgkJCXJleiArPSBwOwoJCQlwICo9IDIuMDsKCQl9IGVsc2UgewoJCQlwIC89IDIuMDsKCQkJYnJlYWs7CgkJfQoJfQoKCXdoaWxlIChwID4gZXBzKSB7CiAgCQl0aWUobnIsIG4yLCBuMywgbjUpID0gc29sdmUocmV6ICsgcCArIGVwcyk7CiAJCWlmIChuciA8PSBuKSB7CgkJCXJleiArPSBwOwoJCX0KICAgIAlwIC89IDIuMDsKCX0KCiAJdGllKG5yLCBuMiwgbjMsIG41KSA9IHNvbHZlKHJleik7CglyZXR1cm4gbWFrZV90dXBsZShyZXosIG4yLCBuMywgbjUpOwp9CgppbnQgbWFpbigpIHsKCWludDY0IG47Ci8vCWNpbiA+PiBuOwoJbiA9IDEwMDAwMDAwMExMOwogCWludDY0IG4yYSwgbjNhLCBuNWE7CiAJaW50NjQgbjJiLCBuM2IsIG41YjsgICAKCWxvbmcgZG91YmxlIHJlejsKCXRpZShyZXosIG4yYiwgbjNiLCBuNWIpID0gZmluZE51bWJlcihuIC0gMSk7Cgl0aWUocmV6LCBuMmEsIG4zYSwgbjVhKSA9IGZpbmROdW1iZXIobiwgcmV6IC0gZXBzKTsKCQoJLy8gdGhlIG51bWJlciBpcyAyXiAqIDNeICogNF4KCWNvdXQgPDwgbjJhIC0gbjJiIDw8ICdcdCcgPDwgbjNhIC0gbjNiIDw8ICdcdCcgPDwgbjVhIC0gbjViIDw8ICdcbic7CglyZXR1cm4gMDsKfQo=