#include <stdio.h>
#include <vector>

std::vector<int> V;
std::vector<long long int> ans;
int main()
{
	long long int a;
	scanf("%lld",&a);
	if(a==0)
	{
		printf("-1");
		return 0;
	}
	
	while(a)
	{
		V.push_back(a%2);
		a/=2;
	}
	for(int i = V.size()-1;i>=2;i--)
	{
		if(V[i]==1)
		{
			long long int t = 3;
			for(int j=i;j>2;j--) t*=2;
			ans.push_back(t);
			for(int j=i;j>=2;j--) V[j] = 1-V[j];
		}
	}
	if(V.size()>=2 && V[1]==1)
	{
		ans.push_back(2);
		for(int i=0;i<=1;i++) V[i] = 1-V[i];
	}
	if(V.size()>=1 && V[0]==1)
	{
		ans.push_back(1);
		for(int i=0;i<=0;i++) V[i] = 1-V[i];
	}
	
	printf("%d\n",ans.size());
	for(int i=0;i<ans.size();i++) printf("%lld ",ans[i]);
}