#include <bits/stdc++.h>
using namespace std;
int INF = 0x3f3f3f3f;
int INF2 = 0x7fffffff;
long long LNF = 0x3f3f3f3f3f3f3f3f;
long long LNF2 = 0x7fffffffffffffff;
long long n, k, M, D;
long long ans;
int main() {
  scanf("%I64d%I64d%I64d%I64d", &n, &k, &M, &D);
  for (int i = (1); i <= (D); ++i) {
    if (i * k - k + 1 > n) break;
    long long c = n / (i * k - k + 1);
    c = min(c, M);
    ans = max(ans, c * i);
  }
  printf("%I64d", ans);
  return 0;
}
