#include <iostream>
#include <cinttypes>
#include <vector>

size_t f(size_t n) {
	size_t r = 1;
	std::vector<uint8_t> sieve(n + 1, 1);
	for (size_t i = 2; i <= n; ++i) {
		if (sieve[i]) {
			for (size_t j = i + i; j <= n; j += i)
			    sieve[j] = 0;
			    
			size_t p = i;
			while (p * i <= n)
			    p = p * i;
			    
			r *= p;
		}
	}
	
	std::cout << n << " " << r << std::endl;
	return r;
}

int main() {
	f(10);
	f(20);
	return 0;
}