#include <bits/stdc++.h>
int a[200][200];
char s[200][200];
long long n, k, m, d;
long long ans;
double test;
const double maxv = 2e18;
int main() {
  scanf("%I64d %I64d %I64d %I64d", &n, &k, &m, &d);
  ans = -1;
  long long x;
  for (int i = 0; i < d; ++i) {
    test = i;
    test *= k;
    if (test < maxv) {
      x = n / (k * i + 1);
      if (x > m) x = m;
    }
    if (ans < x * (i + 1)) ans = x * (i + 1);
  }
  printf("%I64d\n", ans);
  return 0;
}
