#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;
}
