#include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair pii; typedef pair pll; typedef pair pdd; typedef pair piu; typedef pair pui; #define X first #define Y second namespace io{ const int L = (1 << 20) + 1; char buf[L], *S , *T, c; char getchar() { if(S == T) { T = (S = buf) + fread(buf, 1, L, stdin); return (S == T ? EOF : *S++); } return *S++; } int inp() { int x = 0, f = 1; char ch; for(ch = getchar(); !isdigit(ch); ch = getchar()) if(ch == '-') f = -1; for(; isdigit(ch); x = x * 10 + ch - '0', ch = getchar()); return x * f; } ll inp_ll() { ll x = 0; int f = 1; char ch; for(ch = getchar(); !isdigit(ch); ch = getchar()) if(ch == '-') f = -1; for(; isdigit(ch); x = x * 10 + ch - '0', ch = getchar()); return x * f; } ull inp_ull() { ull x = 0; char ch; for(ch = getchar(); !isdigit(ch); ch = getchar()); for(; isdigit(ch); x = x * 10 + ch - '0', ch = getchar()); return x; } void inp_str(char *s) { int len = 0; char ch; for (ch = getchar(); !isdigit(ch); ch = getchar()); for (; isdigit(ch); ch = getchar()) s[len ++] = ch; s[len] = 0; } char B[25], *outs=B+22, *outr=B+22; template inline void print(register T a,register char x=0){ if(x) *--outs = x, x = 0; if(!a)*--outs = '0'; else while(a) *--outs = (a % 10) + 48, a /= 10; fwrite(outs, outr - outs , 1, stdout); outs = outr; } }; using io :: print; using io :: inp; using io :: inp_ull; using io :: inp_str; int main() { int p, d, m, s; cin >> p >> d >> m >> s; for (int i = 1; ; ++ i) { if (s < p) { cout << i-1 << endl; break; } s -= p; p -= d; p = max(p, m); } return 0; }