Shashlik Cooking
Contest: Codeforces Round 507 (Div. 2, based on Olympiad of Metropolises)
Difficulty rating: 1300
Tags: dp, greedy, math

Long story short, shashlik is Miroslav's favorite food. Shashlik is prepared on several skewers simultaneously. There are two states for each skewer: initial and turned over.

This time Miroslav laid out $$$n$$$ skewers parallel to each other, and enumerated them with consecutive integers from $$$1$$$ to $$$n$$$ in order from left to right. For better cooking, he puts them quite close to each other, so when he turns skewer number $$$i$$$, it leads to turning $$$k$$$ closest skewers from each side of the skewer $$$i$$$, that is, skewers number $$$i - k$$$, $$$i - k + 1$$$, ..., $$$i - 1$$$, $$$i + 1$$$, ..., $$$i + k - 1$$$, $$$i + k$$$ (if they exist).

For example, let $$$n = 6$$$ and $$$k = 1$$$. When Miroslav turns skewer number $$$3$$$, then skewers with numbers $$$2$$$, $$$3$$$, and $$$4$$$ will come up turned over. If after that he turns skewer number $$$1$$$, then skewers number $$$1$$$, $$$3$$$, and $$$4$$$ will be turned over, while skewer number $$$2$$$ will be in the initial position (because it is turned again).

As we said before, the art of cooking requires perfect timing, so Miroslav wants to turn over all $$$n$$$ skewers with the minimal possible number of actions. For example, for the above example $$$n = 6$$$ and $$$k = 1$$$, two turnings are sufficient: he can turn over skewers number $$$2$$$ and $$$5$$$.

Help Miroslav turn over all $$$n$$$ skewers.

Input format:
The first line contains two integers $$$n$$$ and $$$k$$$ ($$$1 \leq n \leq 1000$$$, $$$0 \leq k \leq 1000$$$) — the number of skewers and the number of skewers from each side that are turned in one step.

Output format:
The first line should contain integer $$$l$$$ — the minimum number of actions needed by Miroslav to turn over all $$$n$$$ skewers. After than print $$$l$$$ integers from $$$1$$$ to $$$n$$$ denoting the number of the skewer that is to be turned over at the corresponding step.

Constraints:
Time limit: 1.0 s
Memory limit: 512.0 MB

Note:
In the first example the first operation turns over skewers $$$1$$$, $$$2$$$ and $$$3$$$, the second operation turns over skewers $$$4$$$, $$$5$$$, $$$6$$$ and $$$7$$$.

In the second example it is also correct to turn over skewers $$$2$$$ and $$$5$$$, but turning skewers $$$2$$$ and $$$4$$$, or $$$1$$$ and $$$5$$$ are incorrect solutions because the skewer $$$3$$$ is in the initial state after these operations.

Example input:
7 2

Example output:
2
1 6

Example input:
5 1

Example output:
2
1 4

Editorial:
The funny thing about this problem that it is entirely based on real facts, in the real life the $$$k$$$ was equal to $$$1$$$ and one skewer really turned two more.
So it is easy to see, that answer is at least $$$\lceil \frac{n}{2k + 1} \rceil$$$ (because in smaller number of operations we wouldn't simply able to touch all skewers), where the $$$\lceil a \rceil$$$ denotes rounding up.
Set's build an answer with exactly this number of operations. We will make our answer in such way, that each skewer belongs exactly to one operation. That is, we need to put segments of length $$$2k + 1$$$ over the array, such that the ends are touching and that the first and last segments don't pop out of the array too much.
Let's define $$$x = \lceil \frac{n}{2k + 1} \rceil (2k + 1) - n$$$, $$$a = min(n, k)$$$, $$$b = x - a$$$.
Note that $$$0 \le a, b \le k$$$ and $$$a + b = x$$$.
Let's make segments described above in such way, that the first segments outweighs over the array exactly by $$$a$$$ and the last one exactly by $$$b$$$.
Since $$$a, b \le k$$$ it follows, that the centre of this segments stays inside the array.
Some example: $$$n = 7$$$, $$$k = 2$$$, $$$x = 3$$$, $$$a = 2$$$, $$$b = 1$$$
The answer is then as in follows: [#|#|@|@|@] [@|@|@|@|#], where @ denotes skewer, and one block of square brackets corresponds to one operation.