#include<bits/stdc++.h>
using namespace std;
#define N 5000005
#define mod 1000000007
#define ll long long
int n,m,p,x,y,seed,base,a[N],t[N],ans[N];
ll s,tot[3];
int rnd(){
	int ans=seed;
	seed=(1LL*seed*base+233)%mod;
	return ans;
}
int main(){
	scanf("%d%d",&n,&m);
	int lst=0;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d%d",&x,&y,&seed,&base);
		for(int j=lst+1;j<=x;j++){
			t[j]=rnd()%2+1;
			a[j]=rnd()%y+1;
		}
		lst=x;
	}
	for(int i=1;i<=n;i++)tot[t[i]]+=a[i];
	if (tot[1]!=tot[2]){
		if (tot[1]<tot[2])p=1;
		else p=2;
	}
	else p=t[1];
	if (p!=t[1]){
		a[1]--;
		ans[1]++;
	}
	for(int i=1;i<=n;i++)
		if (t[i]==p){
			s+=a[i];
			ans[i]+=a[i];
			a[i]=0;
		}
		else{
			int x=min((ll)a[i],s);
			ans[i]+=x;
			s-=x;
			a[i]-=x;
		}
	for(int i=1;i<=n;i++)
		if (t[i]==p){
			s+=a[i];
			ans[i]+=a[i];
			a[i]=0;
		}
		else{
			int x=min((ll)a[i],s);
			ans[i]+=x;
			s-=x;
			a[i]-=x;
		}
	ans[0]=1;
	for(int i=1;i<=n;i++)ans[0]=((ans[i]^(1LL*i*i))+1)%mod*ans[0]%mod;
	printf("%d",ans[0]);
} 