/*
* Author: Andrei Grigorean
* Time Complexity: O(N^2 * BigNum)
* Memory Complexity: O(N * BigNum)
*/
#include <cstdio>
#include <cstring>
#include <cassert>
const int Base = 10000;
const int Lmax = 128;
const int Nmax = 1024;
int N, D;
int X[Lmax], Y[Lmax];
int Comb[Lmax];
int A[Nmax][Lmax], B[Nmax][Lmax];
void Add(int A[], int B[]) {
int i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; ++i, t /= Base)
A[i] = (t += A[i] + B[i]) % Base;
A[0] = i-1;
}
void Substract(int A[], int B[]) {
for (int i = 1; i <= A[0]; ++i) {
if (A[i] < B[i]) {
A[i] += Base;
--A[i+1];
}
A[i] -= B[i];
}
while (A[0] && !A[A[0]]) --A[0];
}
void Multiply(int A[], int B) {
int i, t =0 ;
for (i = 1; i <= A[0] || t; ++i, t /= Base)
A[i] = (t += A[i] * B) % Base;
A[0] = i-1;
}
void Multiply(int A[], int B[]) {
int i, j, t, C[Lmax];
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; ++i) {
for (t = 0, j = 1; j <= B[0] || t; ++j, t /= Base)
C[i+j-1] = (t += C[i+j-1] + A[i]*B[j]) % Base;
if (i+j-2 > C[0]) C[0] = i+j-2;
}
memcpy(A, C, sizeof(C));
}
void Divide(int A[], int B) {
int i, t = 0;
for (i = A[0]; i; --i, t %= B)
A[i] = (t = t*Base + A[i]) / B;
while (A[0] && !A[A[0]]) --A[0];
}
void Atrib(int A[], int B[]) {
for (int i = 0; i < Lmax; ++i)
A[i] = 0;
for (int i = 0; i <= B[0]; ++i)
A[i] = B[i];
}
int Greater(int A[], int B[]) {
if (A[0] != B[0]) return A[0] > B[0];
for (int i = A[0]; i; --i) {
if (A[i] > B[i]) return 1;
if (A[i] < B[i]) return 0;
}
return 1;
}
void Atrib(int A[], char s[]) {
int Length = strlen(s);
A[0] = 1;
for (int i = Length-1, pow = 1; i >= 0; --i) {
A[A[0]] += pow*(s[i]-'0');
if ((pow *= 10) == 10000 && i > 0) {
pow = 1;
++A[0];
}
}
}
void ReadData() {
char buf[128];
assert(scanf("%d %d\n", &N, &D) == 2);
assert(1 <= N && N <= 1000);
assert(1 <= D && D < N);
assert(scanf("%s", buf) == 1);
assert(strlen(buf) <= 64);
Atrib(X, buf);
assert(scanf("%s", buf) == 1);
assert(strlen(buf) <= 64);
Atrib(Y, buf);
}
void Solve() {
int Aux[Lmax];
Atrib(Aux, Y);
Substract(Aux, X);
Atrib(X, Aux);
for (int i = 1; i <= N; ++i)
A[i][ A[i][0] = 1 ] = i;
Comb[0] = 1; Comb[1] = N;
for (int i = 2; i <= N; ++i) {
for (int j = D+2; j <= N; ++j)
Atrib(B[j], A[j-D-1]);
for (int j = D+2; j <= N; ++j)
Add(B[j], B[j-1]);
Multiply(Comb, N-i+1);
Divide(Comb, i);
int C1[Lmax], C2[Lmax];
Atrib(C1, Comb); Multiply(C1, X);
Atrib(C2, B[N]); Multiply(C2, Y);
if (Greater(C1, C2)) {
printf("%d\n", i);
return;
}
memcpy(A, B, sizeof(B));
memset(B, 0, sizeof(B));
}
}
int main() {
freopen("bile2.in", "r", stdin);
freopen("bile2.out", "w", stdout);
ReadData();
Solve();
}