// 也就是遍历找到(x!-1)*y-n的绝对值的最小值
// 由于当x 为1时,整个最小值固定为n(负n的绝对值)
// 那么我定义一个ll min = n;
// 首先计算出所有的x的阶乘,由于12的阶乘是1e8数量级,因此只需计算到12!即可
// 从i=3开始遍历x,然后j=1开始遍历y
// 注意x,y都不为2,j == 2需要肯踢牛
// 然后当表达式的值大于2*n时其实就可以补瑞克了,因为2*n+1-n一定大于n(我们定义的min)
// 最后输出x和y
#include <iostream>
#include <cmath>
using namespace std;
#define ll long long
ll fact[13] = {0};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll n;
cin>>n;
// n 比较小时
if (n == 1)
{
cout<<1<<' '<<1;
return 0;
}
if (n == 2)
{
cout<<1<<' '<<1;
return 0;
}
// 计算阶乘
fact[1] = 1;
for (int i = 2;i <= 12;i++)
{
fact[i] = fact[i-1]*i;
}
ll min = n;
ll x = 0,y = 0;
for (ll i = 3;i <= 12;i++)
{
if (i == 2)
continue;
for (ll j = 1;j <= 1000000000;j++)
{
if (j ==2 )
continue;
ll temp = fact[i]*j-j;
// 如果前边的已经超过了2*n,说明正的值已经无法再小于
// temp比较小的情况下产生的负值
if (temp >= 2*n)
break;
if (min > abs(temp-n))
{
min = abs(temp-n);
x = i;
y = j;
}
}
}
cout<<x<<' '<<y;
return 0;
}
// 1 2 6 24 120 720 5040 40320 362880 3628800 40000000
// 1 2 3 4 5 6 7 8 9 10 11 12 13