#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,l_1,s_1,i,j;
//记录n个商家每个商家的木头的长度和数量
int a[10010][2];
int r;//最长木头长度
cin>>n>>m>>l_1>>s_1;
//第一个商家木头长度和数量
a[1][1] = l_1;
a[1][2] = s_1;
int max = a[1][1];//最长木头的长度
for(i = 2;i <= n;i++){
a[i][1] = ((a[i - 1][1] * 37011 + 10193) % 10000) + 1;
a[i][2] = ((a[i - 1][2] * 73011 + 24793) % 100) + 1;
if(a[i][1] > max){
max = a[i][1];
}
}
//输出每个商家的木头的长度和数量
// for(i = 1;i <= n;i++){
// cout<<a[i][1]<<" "<<a[i][2]<<endl;
// }
//计算在每个长度下各个商家能供多少根木头
int c;//在每个长度下,各个供应商能供多少根木头
for(i = max;i >= 1;i--){
c = 0;
//循环每个供应商
for(j = 1;j <= n;j++){
c += a[j][1] / i * a[j][2];
}
//如果根数够
if(c >= m){
r = i;
break;
}
}
cout<<r<<endl;
return 0;
}
/**************************************************************
Problem: 1561
User: admin
Language: C++
Result: Accepted
Time:596 ms
Memory:2072 kb
****************************************************************/