#include<cstdio>
#include<algorithm>

using namespace std;

const int MA=25000001;

long long a[MA],b[MA],c[MA];
int M,N;

int main(){
	scanf("%d",&M);
	scanf("%d",&N);
	
	long long m0,md;
	scanf("%lld%lld",&m0,&md);
	a[0]=m0;
	for(int i=1;i<M;i++){
		a[i]=(a[i-1]*58+md)%(N+1);
	}
	
	long long n0,nd;
	scanf("%lld%lld",&n0,&nd);
	b[0]=n0;
	for(int i=1;i<N;i++){
		b[i]=(b[i-1]*58+nd)%(M+1);
	}
	
	sort(b,b+N);
	reverse(b,b+N);
	
	for(int i=0;i<M;i++){
		c[0]++;
		c[a[i]]--;
	}
	for(int i=1;i<N;i++){
		c[i]+=c[i-1];
	}
	
	long long csum=0,bsum=0;
	for(int i=0;i<N;i++){
		csum+=c[i];
		bsum+=b[i];
		bsum=min(bsum,csum);
	}
	printf("%lld\n",bsum);
	return 0;
}
### Prompt

Create a solution in CPP for the following problem:

Example

Input

2 3 1 3 1 0


Output

2

### Response

```cpp
#include<cstdio>
#include<algorithm>

using namespace std;

const int MA=25000001;

long long a[MA],b[MA],c[MA];
int M,N;

int main(){
	scanf("%d",&M);
	scanf("%d",&N);
	
	long long m0,md;
	scanf("%lld%lld",&m0,&md);
	a[0]=m0;
	for(int i=1;i<M;i++){
		a[i]=(a[i-1]*58+md)%(N+1);
	}
	
	long long n0,nd;
	scanf("%lld%lld",&n0,&nd);
	b[0]=n0;
	for(int i=1;i<N;i++){
		b[i]=(b[i-1]*58+nd)%(M+1);
	}
	
	sort(b,b+N);
	reverse(b,b+N);
	
	for(int i=0;i<M;i++){
		c[0]++;
		c[a[i]]--;
	}
	for(int i=1;i<N;i++){
		c[i]+=c[i-1];
	}
	
	long long csum=0,bsum=0;
	for(int i=0;i<N;i++){
		csum+=c[i];
		bsum+=b[i];
		bsum=min(bsum,csum);
	}
	printf("%lld\n",bsum);
	return 0;
}
```