#pragma GCC optimize("O3,unroll-loops") #include #include using namespace std; int main() { cin.tie(nullptr), ios::sync_with_stdio(false); int N, K; cin >> N >> K; constexpr int All = -1, None = -2; vector can_be_zero(N, All); for (int n = N - 1; n > 0; --n) { if (can_be_zero[n] == All) { for (int i = 1; i <= K; ++i) { if (n - i < 0) break; if (can_be_zero[n - i] == All) can_be_zero[n - i] = i; else { can_be_zero[n - i] = None; } } } else if (can_be_zero[n] != None) { int i = can_be_zero[n]; if (n - i >= 0) { if (can_be_zero[n - i] == All) can_be_zero[n - i] = i; else { can_be_zero[n - i] = None; } } } } vector ret; for (int i = 1; i <= K; ++i) { if (can_be_zero[i] == i or can_be_zero[i] == All) ret.push_back(i); } if (ret.empty()) ret.push_back(0); for (auto x : ret) cout << x << '\n'; }