#include #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define FFOR(i,a,b) for(int i=(a);i<=(b);i++) #define REP(i,b) FOR(i,0,b) #define RREP(i,b) FFOR(i,1,b) #define PB push_back #define F first #define S second #define BE(c) c.begin(),c.end() using namespace std; typedef long long LL; typedef int ut; typedef long double ld; typedef pair pr; typedef vector Vpr; typedef vector VI; typedef pair ppr; typedef vector Vppr; typedef priority_queue > PQ; typedef priority_queue > PprQ; const int SIZE=5+3*1e+5; const LL INF=1LL<<60; const ld eps=1e-6; const LL p=7+1e+9; LL nums[SIZE]; int main(){ string s; LL d,H[3]; cin >> d; REP(i,3) cin >> H[i]; LL ans=INF; if(H[1]max(H[2],H[0])) { cout << 0 << endl; return 0; } if(d==0 || (H[0]==0 && H[2]==0)){ cout << -1 << endl; return 0; } ans=min(ans,(H[1]-min(H[0],H[2]))/d+1); ans=min(ans,max(0LL,H[2]-H[1]+d)/d+max(0LL,H[0]-H[1]+d)/d); cout << ans << endl; return 0; }