/*
 * Soubor:  20101210-Fri-fibonacci-S.c
 * Datum:   10.12.2010 10:24
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha:   Fibonacciho posoupnost
 */

#include <stdio.h>
#include <limits.h>

/////////////////////////////////////////////////////
long fibonacci(unsigned int n)
{
    if ( n==0 ) {
        return 0; 
    } else if ( n==1 ) {
        return 1;
    } else {
        return ( fibonacci(n-2)+fibonacci(n-1) );
    }
}

unsigned long fiboiter(unsigned int n)
{
    if ( n==0 ) {
        return 0; 
    } else if ( n==1 ) {
        return 1;
    } else {
        long int soucet;
        long prepre=0;
        long pre=1;
        for (int i=2 ; i<=n ;i++ ) {
            soucet = prepre + pre;
            prepre = pre;
            pre = soucet;
        }
        return soucet;
    }
}
/**
 * Hlavní program.
 */
int main(void) {
    int n;
    
    scanf("%d",&n);
    printf("%ld\n", fibonacci(n) );
    printf("%ld\n", fiboiter(n) );
    printf("%lu\n",ULONG_MAX);
    printf("%ld\n",sizeof(unsigned long));

    return 0;
}

