#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
****************************************************************/