x, k, d = map(int,input().split())
x = abs(x)
if x>k*d:
    ans = x-k*d
else:
    cnt = x//d#xに最も近づくための移動回数
    if (k-cnt)%2==0:
        ans = x-cnt*d
    else:
        if x>0:
            ans = abs(x-cnt*d-d)
        else:
            ans = abs(x-cnt*d+d)
print(ans) x, k, d = map(int,input().split()) x map(int,input().split()) map int input().split() ().split () input split k d x = abs(x) x abs(x) abs x if x>k*d:
    ans = x-k*d
else:
    cnt = x//d#xに最も近づくための移動回数
    if (k-cnt)%2==0:
        ans = x-cnt*d
    else:
        if x>0:
            ans = abs(x-cnt*d-d)
        else:
            ans = abs(x-cnt*d+d) x>k*d x k*d k d ans = x-k*d ans x-k*d x k*d k d cnt = x//d cnt x//d x d if (k-cnt)%2==0:
        ans = x-cnt*d
    else:
        if x>0:
            ans = abs(x-cnt*d-d)
        else:
            ans = abs(x-cnt*d+d) (k-cnt)%2==0 (k-cnt)%2 k-cnt k cnt 2 0 ans = x-cnt*d ans x-cnt*d x cnt*d cnt d if x>0:
            ans = abs(x-cnt*d-d)
        else:
            ans = abs(x-cnt*d+d) x>0 x 0 ans = abs(x-cnt*d-d) ans abs(x-cnt*d-d) abs x-cnt*d-d x-cnt*d x cnt*d cnt d d ans = abs(x-cnt*d+d) ans abs(x-cnt*d+d) abs x-cnt*d+d x-cnt*d x cnt*d cnt d d print(ans) print ans ans = x-cnt*d x-cnt*d ans ans = x-k*d x-k*d ans cnt = x//d x//d cnt ans = abs(x-cnt*d+d) abs(x-cnt*d+d) ans ans = abs(x-cnt*d-d) abs(x-cnt*d-d) ans x, k, d = map(int,input().split()) map(int,input().split()) x x = abs(x) abs(x) x k, d = map(int,input().split()) map(int,input().split()) k d = map(int,input().split()) map(int,input().split()) d
x, k, d = map(int,input().split())
x = abs(x)
if x>k*d:
    ans = x-k*d
else:
    cnt = x//d#xに最も近づくための移動回数
    if (k-cnt)%2==0:
        ans = x-cnt*d
    else:
        if x>0:
            ans = abs(x-cnt*d-d)
        else:
            ans = abs(x-cnt*d+d)
print(ans)