module main; // https://mayokoex.hatenablog.com/entry/2015/09/22/225157 より import std; void main() { // 入力 int d = readln.chomp.to!int; auto H = new int[](3); foreach (ref h; H) h = readln.chomp.to!int; // 答えの計算と出力 if (d == 0) { bool ok = false; if (H[0] > H[1] && H[1] < H[2] && H[0] != H[2]) ok = true; if (H[0] < H[1] && H[1] > H[2] && H[0] != H[2]) ok = true; writeln(ok ? 0 : -1); return; } immutable INF = 10 ^^ 9; int ans = INF; // 真ん中が一番低い { int sum = 0; auto nH = H.dup; if (H[0] == H[2]) { nH[0] = max(0, nH[0] - d); sum++; } if (nH[0] > nH[2]) swap(nH[0], nH[2]); if (nH[0] != 0) { int diff = nH[1] - nH[0]; if (diff >= 0) { int num = diff / d; nH[1] -= d * num; if (nH[1] >= nH[0]) num++; sum += num; } ans = min(ans, sum); } } // 真ん中が一番高い { int sum = 0; auto nH = H.dup; { int diff = nH[0] - nH[1]; if (diff >= 0) { int num = diff / d; nH[0] -= d * num; if (nH[0] >= nH[1]) { nH[0] = max(0, nH[0] - d); num++; } sum += num; } } { int diff = nH[2] - nH[1]; if (diff >= 0) { int num = diff / d; nH[2] -= d * num; if (nH[2] >= nH[1]) { nH[2] = max(0, nH[2] - d); num++; } sum += num; } } if (nH[0] == nH[2] && nH[0] != 0) sum++; ans = min(ans, sum); } if (ans == INF) ans = -1; writeln(ans); }