a(n) = {
	my (z=0, f, e, v=0);
	for (k=2, oo,
		f=fibonacci(k);
		if (f>=n,
			while (n,
				if (n>=f,
					n-=f;
					z+=2^(k-2);
					k--;
				);
				f=fibonacci(k--);
			);
			z=if (z, 2^(e=valuation(z,2))*fromdigits(Vecrev(binary(z/=2^e)), 2), 0);
			while (z,
				z-=2^e=valuation(z,2);
				v+=fibonacci(2+e);
			);
			return (v);
		);
	);
}

for (n=0, 10946, print (n " " a(n)))

quit