#include <bits/stdc++.h>
using namespace std;
const long long int Maxn3 = 1e3 + 10;
const long long int Maxn4 = 1e4 + 10;
const long long int Maxn5 = 1e5 + 10;
const long long int Maxn6 = 1e6 + 10;
const long long int Maxn7 = 1e7 + 10;
const long long int Maxn8 = 1e8 + 10;
const long long int Maxn9 = 1e9 + 10;
const long long int Maxn18 = 1e18 + 10;
const long long int Mod1 = 1e7 + 7;
const long long int Mod2 = 1e9 + 7;
const long long int LLMax = LLONG_MAX;
const long long int LLMin = LLONG_MIN;
const long long int INTMax = INT_MAX;
const long long int INTMin = INT_MIN;
long long int mn = LLMax, mx = LLMin;
long long int n, k, M, D;
long long int c(long long int x) {
  if (!x) return mn;
  return (n + k * x - x) / (k * x);
}
long long int b_s(long long int x) {
  long long int l = 0, r = M + 1, mid;
  while (r - l > 1) {
    mid = (r + l) / 2;
    if (c(mid) < x)
      r = mid;
    else
      l = mid;
  }
  return l;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  long long int n, m, k, d;
  cin >> n >> k >> m >> d;
  for (long long int i = 0; i < d and k * i + 1 <= n; i++)
    ((mx) = max((mx), ((i + 1) * min(m, n / (k * i + 1)))));
  return cout << mx, 0;
}
