#include #include bool isPrime(long long n) { if (n == 2 || n == 3 || n == 5) return true; if (n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n < 5) return false; long long end = sqrt(n); for (long long i = 6; i <= end; i+=6) { if (n % (i - 1) == 0 || n % (i + 1) == 0) { return false; } } return true; } long long counter(long long n) { if (n == 1) return 0; if (n % 2 == 1) { return counter(n - 1) + 1; } else { return counter(n / 2) + 1; } } int main() { long long n; std::cin >> n; long long max = n - 1; // 縦(横)にn-1回切断する if (isPrime(n)) { std::cout << n - 1 << " " << n - 1 << std::endl; return 0; } std::cout << counter(n) << " " << max << std::endl; }