#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define vi vector #define vvi vector #define pi pair #define ll long long #define pll pair #define vll vector #define io ios::sync_with_stdio(false) #define pb push_back #define eb emplace_back #define mp make_pair #define all(c) (c).begin(), (c).end() #define sz(a) int((a).size()) #define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++) #define loop(i,b) for (int i = 0; i < b; ++i) #define present(c,x) ((c).find(x) != (c).end()) #define cpresent(c,x) (find(all(c),x) != (c).end()) #define INF numeric_limits::max() #define LLINF numeric_limits::max() #define max3(a,b,c) max(max(a,b),c) #define min3(a,b,c) min(min(a,b),c) #define F first #define S second #define MOD 1000000007 #define cflout(x) cout << fixed << setprecision(8) << x << endl #define setzero(x) memset(x, 0, sizeof(x)) #ifndef M_PI #define M_PI 3.14159265358979323846 #endif random_device _random_device; default_random_engine _generator(_random_device()); uniform_int_distribution _distribution(0, 0xFFFFFFFFFFFFFFFF); inline long long unsigned get_random_number() { return _distribution(_generator); } template bool uin(T &a, T b) { return a > b ? (a = b, true) : false; } template bool uax(T &a, T b) { return a < b ? (a = b, true) : false; } inline ll nxt() { ll x; cin >> x; return x; } namespace aux { vector split(const string& s, char c) { vector v; stringstream ss(s); string x; while (getline(ss, x, c)) { v.emplace_back(x); } return v; } } int p, d, m, s; int main() { io; cin >> p >> d >> m >> s; int ans = 0; while (s >= p) { ans++; s -= p; p = max(p-d, m); } cout << ans << endl; return 0; }