template<int N, int P>
struct OutOfBound {
  constexpr static const bool value = (P < N) || (P > (6 * N));
};

template<int N, int P, bool OUT_OF_BOUND>
struct CountSumOfPointsImpl {
  constexpr static const long long value = 0;
};

template<int N, int P>
struct CountSumOfPointsImpl<N, P, false> {
  constexpr static const long long value = CountSumOfPointsImpl<N - 1, P - 1, OutOfBound<N - 1, P - 1>::value>::value
      + CountSumOfPointsImpl<N - 1, P - 2, OutOfBound<N - 1, P - 2>::value>::value
      + CountSumOfPointsImpl<N - 1, P - 3, OutOfBound<N - 1, P - 3>::value>::value
      + CountSumOfPointsImpl<N - 1, P - 4, OutOfBound<N - 1, P - 4>::value>::value
      + CountSumOfPointsImpl<N - 1, P - 5, OutOfBound<N - 1, P - 5>::value>::value
      + CountSumOfPointsImpl<N - 1, P - 6, OutOfBound<N - 1, P - 6>::value>::value;
};

template<int P>
struct CountSumOfPointsImpl<1, P, false> {
  constexpr static const long long value = 1;
};

template<int N, int P>
struct CountSumOfPoints {
  constexpr static const long long value =
      CountSumOfPointsImpl<N, P, OutOfBound<N, P>::value>::value;
};

template<int...>
struct Indices {
};

template<class Front, int BACK> struct Append;

template<int... FRONT, int BACK>
struct Append<Indices<FRONT...>, BACK> {
  typedef Indices<FRONT..., BACK> type;
};

template<int BEGIN, int END>
struct IndexGenerator {
  typedef typename Append<typename IndexGenerator<BEGIN, END - 1>::type, END>::type type;
};

template<int BEGIN>
struct IndexGenerator<BEGIN, BEGIN> {
  typedef Indices<BEGIN> type;
};

template<int N>
struct IndexList {
  typedef typename IndexGenerator<N, 6 * N>::type type;
};

template<int N, class Indices> struct Values;

template<int N, int... P>
class Values<N, Indices<P...>> {
public:
  static long long value(int n) {
    long long val = 0;
    if ((n >= N) && (n <= (6 * N))) {
      val = values[n - N];
    }
    return val;
  }

private:
  static const long long values[sizeof...(P)];
};

template<int N, int... P>
const long long Values<N, Indices<P...>>::values[sizeof...(P)] = {
  CountSumOfPoints<N, P>::value...
};

template<int N>
using CountSumOfPointsTable = Values<N, typename IndexList<N>::type>;

#include <iostream>

int main() {
  constexpr const int NUM_DICE = 20;
  for (int i = NUM_DICE; i <= (6 * NUM_DICE); ++i) {
    std::cout << CountSumOfPointsTable<NUM_DICE>::value(i) << std::endl;
  }
  return 0;
}