#include <cstdio>

template <int l, int r, int *a> struct For { static int value; };
template <int l, int r, int *a> int For<l, r, a>::value = For<l, (l + r) / 2, a>::value + For<(l + r) / 2 + 1, r, a>::value;

template <int l, int *a> struct For<l, l, a> { static int value; };
template <int l, int *a> int For<l, l, a>::value = (a[l] = l);

template <int n> struct Calc
{
  static int res[n];
  static int get( int i );
  static int value;
};

template <int n> int Calc<n>::value = For<0, n - 1, res>::value;
template <int n> int Calc<n>::get( int i ) { return res[i]; }
template <int n> int Calc<n>::res[n];

static const int M = 100;
template struct Calc<M>;

int main()
{
  for (int i = 0; i < M; i++)
    printf("%d ", Calc<M>::get(i));
  return 0;
}