#include <bits/stdc++.h>
#include <cmath>

#define  fl(i,a,b) for(long long i=a;i<b;i++)
#define  test long long t_c;cin>>t_c;for(long long ks=1;ks<=t_c;ks++)
#define pb push_back
#define vi vector<int>
#define all(x) x.begin(),x.end()
#define cy cout<<"YES\n";
#define cn cout<<"NO\n";
#define nl cout<<endl;
#define case(x) cout<<"Case "<<x<<": ";



typedef long long ll;
typedef long long int lli;
void sc(int &x){scanf("%d",&x);}
void sc(lli &x){scanf("%lld",&x);}
void sc(char *x){scanf("%s",x);}
void sc(double &x){scanf("%lf",&x);}

using namespace std;
int main()
{
      ios_base::sync_with_stdio(false);
      ll a,b,c,d;
      cin>>a>>b>>c>>d;
      if(c*d<=b)
      {
          cout<<-1<<endl;
      }
      else
      {
          ll x= ceil(a*1.0/(c*d-b)*1.0);
          cout<<x<<endl;
      }


}

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define speed ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)
#define all(vec) vec.begin(),vec.end()
#define int long long int
using namespace std;
using namespace __gnu_pbds;
 
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;

const int mod=1e9+7;

void solve(){
    int a,b,c,d;
    cin >> a >> b >> c >> d;
    
    if(b >= c*d ){
        cout<<-1;
        return;
    }
 
    int x=0;
    int cnt=0;
    while(a > d * x)
    {
        a += b;
        x += c;
        cnt++;
    }
    cout<<cnt;
}
 
signed main(){
    // #ifndef ONLINE_JUDGE
    //     freopen("in.txt", "r", stdin);
    //     freopen("out.txt", "w", stdout);
    // #endif
    speed;
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    //cout << "\n\n"<<"Time elapsed: " << 1000.0 * clock() / CLOCKS_PER_SEC << " seconds.\n";
    return 0;
}