X,K,D = map(int,input().split())
ans = 0
if X == 0:
    if K % 2 == 0:
        ans = 0
    else:
        ans = D
if X > 0:
    if K*D <= X:
        ans = X - K*D
    else:
        n = X // D
        if X % D != 0:
            n += 1
        if (K - n) % 2 == 0:
            ans = abs(X-D*n)
        else:
            ans = abs(X-D*(n-1))
if X < 0:
    if K*D + X <= 0:
        ans = abs(K*D+X)
    else:
        n = -X // D
        if -X % D != 0:
            n += 1
        if (K-n) % 2 == 0:
            ans = abs(X+n*D)
        else:
            ans = abs(X+(n-1)*D)

print(ans) X,K,D = map(int,input().split()) X map(int,input().split()) map int input().split() ().split () input split K D ans = 0 ans 0 if X == 0:
    if K % 2 == 0:
        ans = 0
    else:
        ans = D X == 0 X 0 if K % 2 == 0:
        ans = 0
    else:
        ans = D K % 2 == 0 K % 2 K 2 0 ans = 0 ans 0 ans = D ans D if X > 0:
    if K*D <= X:
        ans = X - K*D
    else:
        n = X // D
        if X % D != 0:
            n += 1
        if (K - n) % 2 == 0:
            ans = abs(X-D*n)
        else:
            ans = abs(X-D*(n-1)) X > 0 X 0 if K*D <= X:
        ans = X - K*D
    else:
        n = X // D
        if X % D != 0:
            n += 1
        if (K - n) % 2 == 0:
            ans = abs(X-D*n)
        else:
            ans = abs(X-D*(n-1)) K*D <= X K*D K D X ans = X - K*D ans X - K*D X K*D K D n = X // D n X // D X D if X % D != 0:
            n += 1
         X % D != 0 X % D X D 0 n += 1 n 1 if (K - n) % 2 == 0:
            ans = abs(X-D*n)
        else:
            ans = abs(X-D*(n-1)) (K - n) % 2 == 0 (K - n) % 2 K - n K n 2 0 ans = abs(X-D*n) ans abs(X-D*n) abs X-D*n X D*n D n ans = abs(X-D*(n-1)) ans abs(X-D*(n-1)) abs X-D*(n-1) X D*(n-1) D n-1 n 1 if X < 0:
    if K*D + X <= 0:
        ans = abs(K*D+X)
    else:
        n = -X // D
        if -X % D != 0:
            n += 1
        if (K-n) % 2 == 0:
            ans = abs(X+n*D)
        else:
            ans = abs(X+(n-1)*D) X < 0 X 0 if K*D + X <= 0:
        ans = abs(K*D+X)
    else:
        n = -X // D
        if -X % D != 0:
            n += 1
        if (K-n) % 2 == 0:
            ans = abs(X+n*D)
        else:
            ans = abs(X+(n-1)*D) K*D + X <= 0 K*D + X K*D K D X 0 ans = abs(K*D+X) ans abs(K*D+X) abs K*D+X K*D K D X n = -X // D n -X // D -X X D if -X % D != 0:
            n += 1
         -X % D != 0 -X % D -X X D 0 n += 1 n 1 if (K-n) % 2 == 0:
            ans = abs(X+n*D)
        else:
            ans = abs(X+(n-1)*D) (K-n) % 2 == 0 (K-n) % 2 K-n K n 2 0 ans = abs(X+n*D) ans abs(X+n*D) abs X+n*D X n*D n D ans = abs(X+(n-1)*D) ans abs(X+(n-1)*D) abs X+(n-1)*D X (n-1)*D n-1 n 1 D print(ans) print ans ans = abs(X-D*n) abs(X-D*n) ans n += 1 1 n n += 1 1 n X,K,D = map(int,input().split()) map(int,input().split()) X D = map(int,input().split()) map(int,input().split()) D ans = abs(K*D+X) abs(K*D+X) ans ans = 0 0 ans n = -X // D -X // D n ans = abs(X+(n-1)*D) abs(X+(n-1)*D) ans ans = D D ans ans = abs(X+n*D) abs(X+n*D) ans n = X // D X // D n K,D = map(int,input().split()) map(int,input().split()) K ans = abs(X-D*(n-1)) abs(X-D*(n-1)) ans ans = X - K*D X - K*D ans ans = 0 0 ans
X,K,D = map(int,input().split())
ans = 0
if X == 0:
    if K % 2 == 0:
        ans = 0
    else:
        ans = D
if X > 0:
    if K*D <= X:
        ans = X - K*D
    else:
        n = X // D
        if X % D != 0:
            n += 1
        if (K - n) % 2 == 0:
            ans = abs(X-D*n)
        else:
            ans = abs(X-D*(n-1))
if X < 0:
    if K*D + X <= 0:
        ans = abs(K*D+X)
    else:
        n = -X // D
        if -X % D != 0:
            n += 1
        if (K-n) % 2 == 0:
            ans = abs(X+n*D)
        else:
            ans = abs(X+(n-1)*D)

print(ans)