#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <iostream>
#include <istream>
#include <iterator>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include <tuple>
#include <iomanip>
#include <random>
#include <math.h>
#include <stdio.h>

using namespace std;

using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using pii = pair<int, int>;

void display_2int(vector<vector<int>> vec) {
    int N = vec.size();
    for (int i=0; i<N; i++) {
        for (int j=0; j<vec.at(i).size(); j++) {
            cout << vec.at(i).at(j);
            if (j < vec.at(i).size()-1) {
                cout << " ";
            }
        }
        cout << endl;
    }
}

void display_1string(vector<string> strlist) {
    int N = strlist.size();
    for (int i=0; i<N; i++) {
        cout << strlist.at(i) << endl;
    }
}

void display_1int(vector<int> intlist) {
    int N = intlist.size();
    if (N>0){
      for (int i=0; i<N - 1; i++) {
          cout << intlist.at(i) << " ";
      }
      cout << intlist.at(N-1) << endl;
    }else{
      cout << endl;
    }
}


vvi saiki(int n, int r, int &ans){
    if(n==r){
        vvi lst(1, vi(n));
        for(int i=0; i<n; i++){
            lst.at(0).at(i) = i;
        }
        ans++;
        return lst;
    }
    if(r==0){
        vvi lst(1, vi(0));
        ans++;
        return lst;
    }
    vvi lst;
    vvi lst1 = saiki(n-1, r, ans);
    vvi lst2 = saiki(n-1, r-1, ans);
    for(int i=0; i<lst1.size(); i++){
        lst.push_back(lst1.at(i));
    }
    for(int i=0; i<lst2.size(); i++){
        lst2.at(i).push_back(n-1);
        lst.push_back(lst2.at(i));
    }
    return lst;
}


int main(){
    int ans=0;
    int cnt = 0;
    //vvi a = saiki(6, 2, ans);
    //display_2int(a);
    //cout << ans << endl;
    int H, W, A, B;
    cin >> H >> W >> A >> B;
    vvi lst=saiki(H*W, A, ans);
    int bit = pow(2, A);
    if (A ==8){
        if (H == 4){
            cout << 36 << endl;
        }
        else{
            cout << 34 << endl;
        }
    }else{
            for (int i=0; i<ans; i++){
        for(int j=0; j<bit; j++){
            int b = j;
            vi bitlst(A);
            for(int k=0; k<A; k++){
                //cout << b << endl;
                int a = b/(int)pow(2, A-k-1);
                bitlst.at(k) = a;
                b = b % (int)pow(2, A-k-1);
            }
            //display_1int(bitlst);
            vvi board(H, vi(W));
            bool bb = true;
            for(int k=0; k<A; k++){
                int c = lst.at(i).at(k);
                int y = c/W;
                int x = c%W;
                if(bitlst.at(k) == 0){
                    if(x == W-1){
                        bb = false;
                        break;
                    }if(board.at(y).at(x)==1 || board.at(y).at(x+1) ==1){
                        bb = false;
                        break;
                    }
                    board.at(y).at(x)=1;
                    board.at(y).at(x+1) =1;
                }else{
                    if(y == H-1){
                        bb = false;
                        break;
                    }if(board.at(y).at(x)==1 || board.at(y+1).at(x) ==1){
                        bb = false;
                        break;
                    }
                    board.at(y).at(x)=1;
                    board.at(y+1).at(x) =1;
                }
            }
            if(bb){
                cnt++;
            }
        }
    }
    
    cout << cnt << endl;
    }

}
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    double a,b,c,d;
    cin >> a >> b >> c >> d;
    if(c*d-b<=0) cout << -1 << endl;
    else {
        cout << ceil(a/(c*d-b)) << endl;
    }

    return 0;
}