# ABC172　C - Walking Takahashi
X,K,D=map(int,input().split())

q=abs(X)//D
if q>K:
    print(abs(X)-K*D)
else:
    if (K-q)%2==0:
        print(abs(X)-q*D)
    else:
        print(abs(abs(X)-(q+1)*D)) X,K,D=map(int,input().split()) X map(int,input().split()) map int input().split() ().split () input split K D q=abs(X)//D q abs(X)//D abs(X) abs X D if q>K:
    print(abs(X)-K*D)
else:
    if (K-q)%2==0:
        print(abs(X)-q*D)
    else:
        print(abs(abs(X)-(q+1)*D)) q>K q K print(abs(X)-K*D) print abs(X)-K*D abs(X) abs X K*D K D if (K-q)%2==0:
        print(abs(X)-q*D)
    else:
        print(abs(abs(X)-(q+1)*D)) (K-q)%2==0 (K-q)%2 K-q K q 2 0 print(abs(X)-q*D) print abs(X)-q*D abs(X) abs X q*D q D print(abs(abs(X)-(q+1)*D)) print abs(abs(X)-(q+1)*D) abs abs(X)-(q+1)*D abs(X) abs X (q+1)*D q+1 q 1 D K,D=map(int,input().split()) map(int,input().split()) K q=abs(X)//D abs(X)//D q D=map(int,input().split()) map(int,input().split()) D X,K,D=map(int,input().split()) map(int,input().split()) X
# ABC172　C - Walking Takahashi
X,K,D=map(int,input().split())

q=abs(X)//D
if q>K:
    print(abs(X)-K*D)
else:
    if (K-q)%2==0:
        print(abs(X)-q*D)
    else:
        print(abs(abs(X)-(q+1)*D))