/*
 * This code is from "Algorithms in C, Third Edition,"
 * by Robert Sedgewick, Addison Wesley Longman, 1998.
 */
#include <stdio.h>
#include <stdlib.h>

#define unknown (-1)
#define Nmax 31

int knownF[Nmax];

int F(int i)
  { int t;
    if (knownF[i] != unknown) return knownF[i];
    if (i == 0) t = 0;
    if (i == 1) t = 1;
    if (i > 1) t = F(i-1) + F(i-2);
    return knownF[i] = t; 
  }

main(int argc, char **argv)
{ int i, n=atoi(argv[1]);
  for (i=0; i<=n; i++) knownF[i]=unknown;
  for (i=0; i<=n; i++) printf("%d\n", F(i));
  printf("\n");
}
