#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int s;
int div[1005],dp[1005];
void init(){
for(int i=2;i<=1000;i++){
int ans=1;
for(int j=2;j<=sqrt(i);j++){
if(i%j==0){
if(j!=i/j){
ans+=(j+i/j);
}
else{
ans+=j;
}
}
}
div[i]=ans;
}
}
int main(){
init();
scanf("%d",&s);
for(int i=1;i<=s;i++){
for(int j=s;j>=0;j--){
if(j>=i){
dp[j]=max(dp[j-i]+div[i],dp[j]);
}
}
}
printf("%d\n",dp[s]);
for(int i=1;i<=1000;i++){
printf("%d ",div[i]);
}
return 0;
}