#include<bits/stdc++.h>
using namespace std;
#define dbg(x) cerr << #x << " = " << x << endl
#define rep(i, a, b) for(int i = (a); i <= (b); ++ i)
#define MP make_pair
#define pb push_back
#define fi first
#define se second
typedef long long LL;
typedef unsigned long long u64;
typedef unsigned int u32;
template <typename Tp> void read(Tp &x){
	x = 0; int op = 1; char ch = getchar();
	while(!isdigit(ch)){ if(ch == '-') op = -1; ch = getchar(); }
	while(isdigit(ch)){ x = x*10+ch-'0'; ch = getchar(); } x *= op;
}
template <typename Tp> void CMax(Tp &x, Tp y){ if(y > x) x = y; }
template <typename Tp> void CMin(Tp &x, Tp y){ if(y < x) x = y; }

int a, b, c, d;



int main()
{
	cin >> a >> b >> c >> d;
	if(b >= c * d) puts("-1");
	else {
		LL v = d * c - b;
		LL ans = ceil((double)a / (double)v);
		printf("%lld", ans);
	}
	return 0;
}

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <initializer_list>
#include <cmath>

#define REP(i, n)       for(int i = 0; i < (n); i++)
#define REPS(i, a, b)   for(int i = (a); i <= (b); i++)
#define REPR(i, n)      for(int i = (n) - 1; i >= 0; i--)
#define REPRS(i, b, a)  for(int i = (b) ; i >= (a); i--)
#define ALL(x)          (x).begin(), (x).end()
#define ALLR(x)         (x).rbegin(), (x).rend()

constexpr static int MOD = 1e8 + 7;

inline void scan() {}

template <typename T, typename... U>
inline void scan(T&& t, U&&... u) {
  std::cin >> t;
  scan(std::forward<U>(u)...);
}

template <typename T>
inline void scanall(T t, int n) {
  for (int i = 0; i < n; i++) {
    std::cin >> t[i];
  }
}

template <typename T>
inline void scanall(T t, int n, int m) {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      std::cin >> t[i][j];
    }
  }
}

inline void print() {}

template <typename T, typename... U>
inline void print(T&& t, U&&... u) {
  std::cout << t;
  print(std::forward<U>(u)...);
}

inline void println() {
  std::cout << "\n";
}

template <typename T, typename... U>
inline void println(T&& t, U&&... u) {
  std::cout << t;
  println(std::forward<U>(u)...);
}


using graph = std::vector<std::vector<int>>;
using ll = long long;
using ull = unsigned long long;


int main() {
  double a, b, c, d;
  scan(a, b, c, d);

  ll ans;
  if (c * d - b > 0) {
    ans = static_cast<ll>(std::ceil(a / (c * d - b)));
  } else {
    ans = -1;
  } 

  print(ans);
  
  return 0;
}