#include<bits/stdc++.h>
#define mod 1000000007
#define pi pair<int, int>
#define ll long long int
#define pll pair<ll, ll>
#define ppll pair<pll, ll>
#define vi vector<int>
#define vll vector<ll>
#define vpi vector<pi>
#define vpll vector<pll>
#define vppll vector<pair<pll, ll>>
#define vvll vector<vector<ll>>
#define vvpll vector<vector<pll>>
#define repi(i,a,n) for(ll i=a;i<n;i++)
#define repr(i,a,b) for(ll i=a;i>=b;i--)
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
#define allr(x) x.rbegin(), x.rend()
#define clr(x) memset(x, 0, sizeof(x))
#define sortall(x) sort(all(x))
#define pr(i,v) for(auto i:v)
static int row[4] = {-1, 0, 0, 1};
static int col[4] = {0, -1, 1, 0};
static int dagb[4] = {1, -1, 1, -1};
static int daga[4] = {1, -1, -1, 1};
//its not the same code
// why dd you not understand;
using namespace std;

int main( ) 
{
  
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
     #ifndef ONLINE_JUDGE
        freopen("input.txt" , "r"  ,stdin);  
        freopen("ott.txt" , "w" ,stdout);
        freopen("error.txt" , "w" ,stderr);
     #endif 
 
     
      ll t=1;
     // cin>>t;
     
   while(t--){ 
    string s;
      ll l,n,m,r,w=0,y=0,z,x=0,flag=0,k=-1, mn=1e10,e=0,cnt=0,f=INT_MAX,sum=0,de=1,mx=0,ans=0;
     cin>>x>>y>>z>>w;
        if(w*z-y<=0)cout<<-1<<endl;
        else{
          if(x%(w*z-y)!=0)cout<<x/(w*z-y)+1<<endl;
          else cout<<x/(w*z-y)<<endl;
        }

        
        }
   return 0; 
}
#include <bits/stdc++.h>

using namespace std;

typedef long long   ll;

int main(){
    ll a, b, c, d;

    cin >> a >> b >> c >> d;

    ll lo = ll(1LL), hi = ll(1e6);
    ll r = -1LL;

    while(lo <= hi){
        ll x = (lo + hi) >> 1LL;

        if(a + x * b <= d * x * c){
            r = x;
            hi = x - 1;
        }else{
            lo = x + 1;
        }
    }

    printf("%lld\n", r);
    return 0;
}