Problem:
Score : 300 points

Problem Statement

Takahashi, who lives on the number line, is now at coordinate X. He will make exactly K moves of distance D in the positive or negative direction.

More specifically, in one move, he can go from coordinate x to x + D or x - D.

He wants to make K moves so that the absolute value of the coordinate of the destination will be the smallest possible.

Find the minimum possible absolute value of the coordinate of the destination.

Constraints

-10^{15} \leq X \leq 10^{15}

1 \leq K \leq 10^{15}

1 \leq D \leq 10^{15}

All values in input are integers.

Input

Input is given from Standard Input in the following format:

X K D

Output

Print the minimum possible absolute value of the coordinate of the destination.

Sample Input 1

6 2 4

Sample Output 1

2

Takahashi is now at coordinate 6. It is optimal to make the following moves:

Move from coordinate 6 to (6 - 4 =) 2.

Move from coordinate 2 to (2 - 4 =) -2.

Here, the absolute value of the coordinate of the destination is 2, and we cannot make it smaller.

Sample Input 2

7 4 3

Sample Output 2

1

Takahashi is now at coordinate 7. It is optimal to make, for example, the following moves:

Move from coordinate 7 to 4.

Move from coordinate 4 to 7.

Move from coordinate 7 to 4.

Move from coordinate 4 to 1.

Here, the absolute value of the coordinate of the destination is 1, and we cannot make it smaller.

Sample Input 3

10 1 2

Sample Output 3

8

Sample Input 4

1000000000000000 1000000000000000 1000000000000000

Sample Output 4

1000000000000000

The answer can be enormous.

Solution in Ruby (2.7.1) (judge verdict: Runtime Error)

x, k, d = gets.chomp.split(" ").map(&:to_i)

if x > 0
    kaisuu = x / d
    if x - k * d >= 0
        puts x - k * d
    else
        sei = x - kaisuu * d
        nokori = k - kaisuu
        hu = sei - d
        if sei > 0
            if nokori % 2 == 0
                puts sei
            else
                puts hu
            end
        elsif sei == 0
            seimae = x - (kaisuu-1)*d
            mannaka = x - kaisuu * d
            huato = x - (kaisuu+1)*d
            zenbu = k -(kaisuu-1)
            if zenbu % 4 == 0
                puts seimae
            elsif zenbu % 4 == 1 || zunbu % 4 == 3
                puts "0"
            elsif zenbu % 4 == 2
                puts huato
            end
        end
    end
elsif x == 0
    if k % 4 == 1
        puts x + d
    elsif k % 4 == 0 || k % 4 == 2
        puts x
    elsif k % 4 == 3
        puts x - d
    end
elsif x < 0
    kaisuu = x.abs / d
    if x + k * d <= 0
        puts x + k * d
    else
        sei = x + kaisuu * d
        nokori = k - kaisuu
        hu = sei - d
        if sei < 0
            if nokori % 2 == 0
                puts sei
            else
                puts hu
            end
        elsif sei == 0
            seimae = x + (kaisuu-1)*d
            mannaka = x + kaisuu * d
            huato = x + (kaisuu+1)*d
            zenbu = k -(kaisuu-1)
            if zenbu % 4 == 0
                puts seimae
            elsif zenbu % 4 == 1 || zenbu % 4 == 3
                puts "0"
            elsif zenbu % 4 == 2
                puts huato
            end
        end
    end
end