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

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

template<>
struct CountSumOfPoints<1, 1> {
  constexpr static const long long value = 1;
};

template<>
struct CountSumOfPoints<1, 2> {
  constexpr static const long long value = 1;
};

template<>
struct CountSumOfPoints<1, 3> {
  constexpr static const long long value = 1;
};

template<>
struct CountSumOfPoints<1, 4> {
  constexpr static const long long value = 1;
};

template<>
struct CountSumOfPoints<1, 5> {
  constexpr static const long long value = 1;
};

template<>
struct CountSumOfPoints<1, 6> {
  constexpr static const long long value = 1;
};

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) {
    return values[n - N];
  }

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() {
  //std::cout << CountSumOfPoints<20, 40>::value << std::endl;
  //std::cout << CountSumOfPointsTable<20>::value(40) << std::endl;
  for (int i = 20; i <= 120; ++i) {
    std::cout << CountSumOfPointsTable<20>::value(i) << std::endl;
  }
  return 0;
}