93 _q.push_back(std::vector<std::vector<int> >(1, std::vector<int>(3)));
99 for (
size_t i =
_q.size(); i < n + 1; ++i) {
100 _q.push_back(std::vector<std::vector<int> >());
101 for (
size_t j = 0; j <
_q[i - 1].size(); ++j) {
102 size_t k_max =
_q[i - 1][j].size();
103 std::vector<int> new_vec(
_q[i - 1][j]);
105 new_vec[0] *= new_vec[1];
108 _q[i].push_back(new_vec);
109 for (
size_t k = 2; k < k_max; ++k) {
111 if (
_q[i - 1][j][k] > 0) {
112 std::vector<int> new_vec(
_q[i - 1][j]);
113 if (k == k_max - 1) new_vec.push_back(0);
114 new_vec[0] *= new_vec[k];
117 _q[i].push_back(new_vec);
123 if (
_h.size() == 0) {
125 _h.push_back(std::vector<std::vector<int> >());
127 _h.push_back(std::vector<std::vector<int> >());
128 _h[1].push_back(std::vector<int>(2, 1));
130 for (
size_t i =
_h.size(); i < n + 1; ++i) {
131 _h.push_back(std::vector<std::vector<int> >());
132 for (
size_t j = 0; j <
_h[i - 1].size(); ++j) {
135 std::vector<int> new_vec(
_h[i - 1][j]);
137 _h[i].push_back(new_vec);
138 for (
size_t k = 1; k <
_h[i - 1][j].size(); ++k) {
139 if (
_h[i - 1][j][k] > 0) {
140 std::vector<int> new_vec(
_h[i - 1][j]);
141 if (k ==
_h[i - 1][j].size() - 1) new_vec.push_back(0);
142 new_vec[0] *= new_vec[k];
145 _h[i].push_back(new_vec);