#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

#define sp(y) fixed<<setprecision(y)
#define w(t) int t;cin>>t;while(t--)
//#define pi 2*acos(0.0)
#define bg begin()
#define en end()
#define all(x) x.begin(),x.end()
#define sortarr(x) sort(x,x+arrsize(x))
#define arrsize(x) sizeof(x)/sizeof(x[0])
#define sortall(x) sort(all(x))
#define formn(m,n) for(m;m<=n;m++)
#define mp make_pair
#define pb push_back
#define vi vector<ll>
#define vs vector<string>
#define REP(i,a,b) for (auto i=a;i<=b;i++)
#define sq(a) (a)*(a)
ll pow(ll c,ll d){return d==0?:c*pow(c,d-1);}
ll gcd(ll a,ll b) {return b==0? a:gcd(b,a%b);}
ll lcm(ll a,ll b) {return ((a*b)/gcd(a,b));}
//fast I/o;
void fastIO(){
     ios_base::sync_with_stdio(false);
     cin.tie(NULL);

}
void init_code(){
    fastIO();

}

//solution
#define mx 1000005
#define m7 1000000007
int prime[mx];
int arr[mx];
void seive(){
    prime[0]=1;
    prime[1]=1;
    for(ll i=2;i<mx;i++){
        if(prime[i]==0){
            for(ll j=i*i;j<mx;j+=i){
                prime[j]=1;
            }
        }

    }
}

int solve(){
    ll a,b,c,d;
    ll blue,red;
    cin>>a>>b>>c>>d;
    red = 0;
    blue =a;

    if((c*d - b) <=0){
       cout<<-1<<endl;
    }else{
         REP(i,1,a){
               blue+=b;
               red+=c;
               if(blue<=d*red){
                    cout<<i<<endl;
                    return 0;
               }

         }

    }









return 0;
}
//end solution
int main(){


     init_code();
    solve();
}

#include <iostream>


#include <cmath>
#include <iostream>

namespace {

int solve(const int a, const int b, const int c, const int d) {
  int tmp = c * d - b;
  if (tmp > 0) {
    return static_cast<int>(std::ceil(static_cast<double>(a) / tmp));
  }
  return -1;
}
}  // namespace

int main() {
  int a, b, c, d;
  std::cin >> a >> b >> c >> d;

  std::cout << solve(a, b, c, d) << std::endl;
  return EXIT_SUCCESS;
}
