#include<cstdio>
#include<cmath>
using namespace std;

#define ll long long
ll a,b,c,d;
int main()
{
	scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
	if (c*d<=b) printf("-1\n");
	else printf("%d",(int)ceil(a*1.0/(c*d-b)));
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double lld;
 
#define mod 1000000007;
#define INF 1e18
#define pb push_back
 
#define F first
#define S second
#define pll pair<ll,ll>
#define plll pair<ll,pair<ll,ll>>
// pb,mp,F,S,MOD,INF should not be used as variable names for any instances... 
 
#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define debug(x)
#endif
 
void _print(ll t) {cerr << t;}
void _print(int t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(lld t) {cerr << t;}
void _print(double t) {cerr << t;}
void google(int t) {cout << "Case #" << t << ": ";}
 
template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V> void _print(pair <T, V> p) {cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";}
template <class T> void _print(vector <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}
 
ll gcd(ll a,ll b)
{
    if(b==0)
    {
        return a;
    }
    return gcd(b,a%b);
}
ll lcm(ll a,ll b)
{   
    return a*b/__gcd(a,b);
}
bool isprime(ll x){
    if(x <= 1){
        return false;
    }
    if(x % 2 == 0 && x != 2){
        return false;
    }
    for(ll i=3;i<=sqrt(x);i+=2){
        if(x%i == 0){
            return false;
        } 
    }
    return true;
}
ll power(ll x,ll y)
{
    if (y == 0)
     {  return 1;}
 
    if (y%2==0)
    {
        return (power(x,y/2)*power(x,y/2))%mod;
    }
    if(y%2!=0)
    {
        return (x*power(x,y/2)*power(x,y/2))%mod;
    }
}
#define ma 200001
vector<ll>edges[ma];
vector<ll>cat(ma);
ll up[ma][20];
// vector<pair<ll,ll>>downpath(ma);
// vector<ll>diameter(ma,0);
// vector<ll>vis(ma,0);
// int dfs(int src)
// {
//     vis[src]=1;
//     for(auto i:v[src])
//     {
//         if(vis[i]==0)
//         {   
//             dfs(i);
//             downpath[src].S+=1+downpath[i].S;
//             downpath[src].F+=downpath[i].F+downpath[i].S+1;
//         }
//     }
// }
void binarylift(int src,int par)
{
    up[src][0]=par;
    for(int i=1;i<20;i++)
    {
        if(up[src][i-1]!=-1)
        {
            up[src][i]=up[up[src][i-1]][i-1];
        }
        else
        {
            up[src][i]=-1;
        }
    }
    for(auto i:edges[src])
    {
        if(i!=par)
        {
            binarylift(i,src);
        }
    }
}
ll ans=0;
void solve(int r_sum,int edge,int node,int find,int c_sum)
{  // cout<<"fyj"<<endl;
    if(c_sum>r_sum)
    {
        return;
    }
    if(c_sum==r_sum)
    {   //cout<<find<<endl;
        if(find!=0)
        {
            ans=(ans+1)%mod;
        }
        return;
    }
    for(int i=1;i<=edge;i++)
    {
        if(i>=node)
        {
            solve(r_sum,edge,node,find+1,c_sum+i);
        }
        else
        {
            solve(r_sum,edge,node,find,c_sum+i);
        }
    }
}
int main()
{    
      #ifndef ONLINE_JUDGE
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        freopen("Error.txt", "w", stderr);
      #endif
      ll t,n,j,h,r,x,y,k,w,l,m,i,d,A,B,p,q;
      t=1;
      while(t--)
      { 
        ll a,b,c;
        cin>>a>>b>>c>>d;
        if(b>=c*d)
        {
           cout<<-1<<endl;continue;  
        }
        k=0;l=0;
        while(k*d<a)
        {
            k+=c;
            a+=b;
            l++;
        }
        cout<<l<<endl;
       }
    return 0;
}