// author: xay5421
// created: Sun Jun 13 00:10:43 2021
#ifdef xay5421
#define D(...) fprintf(stderr,__VA_ARGS__)
#else
#define D(...) ((void)0)
//#define NDEBUG
#endif
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
typedef long long LL;
LL n,f[90],dp[90][2],opt[90][2],dx[90],dy[90];
void sol0(int pos){
	opt[pos][0]=1;
	per(i,pos-1,1){
		opt[i][0]=opt[i+1][0]+(~i&1?opt[i+1][1]:0);
		opt[i][1]=opt[i+1][1]+(i&1?opt[i+1][0]:0);
	}
	LL rem=n-dp[pos][0];
	rep(i,1,pos-1){
		if(i&1){
			while(opt[i][1]&&rem>=opt[i][1]){
				++dy[i];
				rem-=opt[i][1];
			}
			while(opt[i][0]&&rem>=opt[i][0]){
				++dx[i];
				rem-=opt[i][0];
			}
		}else{
			while(opt[i][0]&&rem>=opt[i][0]){
				++dx[i];
				rem-=opt[i][0];
			}
			while(opt[i][1]&&rem>=opt[i][1]){
				++dy[i];
				rem-=opt[i][1];
			}
		}
	}
	D("rem=%lld\n",rem);
	dx[pos]+=rem;
	vector<int>ans;
	ans.push_back(1);
	ans.push_back(2);
	rep(i,1,pos){
		if(i>1){
			if(i&1)ans.push_back(4);
			else ans.push_back(3);
		}
		rep(_,1,dx[i])ans.push_back(1);
		rep(_,1,dy[i])ans.push_back(2);
	}
	cout<<ans.size()<<endl;
	for(int x:ans)printf("%d\n",x);
}
int main(){
	f[0]=f[1]=1;
	rep(i,2,89)f[i]=f[i-1]+f[i-2];
	scanf("%lld",&n);
	dp[1][0]=dp[1][1]=1;
	rep(i,2,89){
		dp[i][0]=dp[i-1][0]+(~i&1?dp[i-1][1]:0);
		dp[i][1]=dp[i-1][1]+(i&1?dp[i-1][0]:0);
	}
	per(i,89,1){
		if(dp[i][0]<=n){
			sol0(i);
			return 0;
		}
		/*else{
			sol1(i);
		}*/
	}
	return 0;
}
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

vector<int> ans;

bool gcd(ll a, ll b, int c) {
	if (c < 0) return false;
	if (a == 0) {
		if (b > c) return false;
		for (int i = 0; i < b; ++i) {
			ans.push_back(2);
		}
		return true;
	}
	if (b == 0) {
		if (a > c) return false;
		for (int i = 0; i < a; ++i) {
			ans.push_back(1);
		}
		return true;
	}
	if (a > b) {
		if (gcd(a - b, b, c - 1)) {
			ans.push_back(3);
			return true;
		}
		return false;
	}
	if (gcd(a, b - a, c - 1)) {
		ans.push_back(4);
		return true;
	}
	return false;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	ll n;
	cin >> n;
	std::mt19937_64 gen{0};
	for (;;) {
		ll b = gen() % n;
		if (gcd(n, b, 130)) {
			break;
		} else if (gcd(b, n, 130)) {
			break;
		}
	}
	cout << ans.size() << endl;
	for (auto v: ans) {
		cout << v <<  endl;
	}
}