#undef DEBUG

#ifdef DEBUG
#define debug(...) fprintf(stderr, __VA_ARGS__)
#else
#define debug(...) do ; while(0)
#define NDEBUG
#endif

#include <assert.h>
#include <stdbool.h>
#include <stdio.h>

using namespace std;

int main ()
{
#ifdef CONTEST
  freopen("fib6.in", "rt", stdin);
  freopen("fib6.out", "wt", stdout);
#endif
  // input
  int X;
  scanf("%d", &X);
  // calculate fib up to X
  int f[50];
  int k = 0;
  int p = 1;
  f[0] = 1;
  while (f[k] + p <= X) {
    f[k+1] = f[k] + p;
    p = f[k];
    k++;
  }
  // greedy algorithm for calculating the answer
  int c[50];
  int count = 0;
  while (X > 0) {
    X -= f[k];
    c[count++] = f[k];
    while (k > 0 && f[k] > X)
      k--;
  }
  // answer
  if (count <= 6) {
    printf("%d", count);
    for (int i=0; i<count; i++)
      printf(" %d", c[i]);
    printf("\n");
  }
  else
    printf("impossible\n");
  return 0;
}