#include <iostream>
#include <string>

using namespace std;

template < int N >
struct Fib
{
    static const int v = (Fib<N-1>::v + Fib<N-2>::v) % 1000000007;
};

template < >
struct Fib<0>
{
    static const int v = 1;
};

template < >
struct Fib<1>
{
    static const int v = 1;
};


const int M = 10;
int f[M];

template < int N >
void foo()
{
    f[N] = Fib<N>::v;
    foo<N-1>();
}

template < >
void foo<0>()
{
    f[0] = Fib<0>::v;
}

int main()
{
    foo<M-1>();
    for (int i = 0; i < M; ++i)
        cout << f[i] << " ";
    cout << "\n";
    return 0;
}
