#include <stack>
#include <cstdio>
#include <vector>
using namespace std;
#define int long long
stack < int > st;
vector < int > ans;
int fib[100];
int n;

signed main() {
	scanf( "%lld", &n );
	fib[1] = fib[2] = 1;
	for( int i = 3;i <= 88;i ++ )
		fib[i] = fib[i - 1] + fib[i - 2];
	for( int i = 88;i;i -- )
		if( n >= fib[i] ) st.push( i ), n -= fib[i];
	int ip = 0;
	while( ! st.empty() ) {
		int x = st.top(); st.pop();
		if( x & 1 ) {
			while( ip < x - 1 ) {
				if( ip & 1 ) ans.push_back( 4 );
				else ans.push_back( 3 );
				ip ++;
			}
			ans.push_back( 1 );
		}
		else {
			while( ip < x - 1 ) {
				if( ip & 1 ) ans.push_back( 4 );
				else ans.push_back( 3 );
				ip ++;
			}
			ans.push_back( 2 );
		}
	}
	printf( "%lld\n", ans.size() );
	for( int i = ans.size() - 1;~ i;i -- )
		printf( "%lld\n", ans[i] );
}
#include<bits/stdc++.h>
using namespace std;
int main(){
  int n;
  cin>>n;
  vector<bool> prime(n+1,true);
  for(int i=2;i<=n;i++){
      if(prime[i]){
          for(int j=i*i;j<=n;j+=i){
              prime[j]=false;
          }
      }
  }
  long long int count=1;
  for(int i=2;i<=n;i++){
      if(prime[i]){
      double d=n;
      double d1=i;
      int ans=floor(log(n)/log(i));
       count*=pow(i,ans);
      }
  }
  cout<<count+1;


}