#include<bits/stdc++.h>
#define endl '\n'
#define debug cout<<"debug"
using namespace std;
int f[10001],ans[10001],a[100001],b[5],Ans[100001];double dp[10001],w[10001];
void cheng(){
int la=100000;
while(a[la]==0&&la>1)la--;
int lb=4;
while(b[lb]==0&&lb>1)lb--;
for(int i=1;i<=la;i++)
for(int j=1;j<=lb;j++)
{
Ans[i+j-1]+=a[i]*b[j];
Ans[i+j]+=Ans[i+j-1]/10;
Ans[i+j-1]%=10;
}
}
void zh(int x){
int k=0;
for(;x;x/=10)b[++k]=x%10;
}
void y(){
int len=100000;
while(Ans[len]==0&&len>1)len--;
for(int i=1;i<=len;i++)a[i]=Ans[i];
memset(Ans,0,sizeof(Ans));
}
int main(){
int k=0,n;cin>>n;
for(int i=2;i<=n;i++)w[i]=log(i);
for(int i=2;i<=n;i++)
for(int j=n;j>=i;j--)
if(dp[j-i]+w[i]>dp[j])dp[j]=dp[j-i]+w[i],f[j]=j-i;
for(int i=n;i;i=f[i])ans[++k]=i-f[i];
for(int i=k;i>=1;i--)printf("%d ",ans[i]);putchar('\n');
a[1]=1;
for(int i=k;i>=1;i--)zh(ans[i]),cheng(),y();
int len=100000;
while(a[len]==0&&len>1)len--;
for(int i=len;i>=1;i--)putchar(a[len]|48);
return 0;
}