#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
unsigned x,y,z,mp[maxn][18];
int dis[maxn];
unsigned RNG61()
{
x=x^(x<<11);
x=x^(x>>4);
x=x^(x<<5);
x=x^(x>>14);
unsigned w=x^(y^z);
x=y;
y=z;
return z=w;
}
int main()
{
int t,n,m,maxd;
long long ans;
for(int i=2;i<maxn;i++)
dis[i]=dis[i>>1]+1;
scanf("%d",&t);
while(t--&&scanf("%d%d%u%u%u",&n,&m,&x,&y,&z)!=EOF)
{
memset(mp,0,sizeof(mp));
maxd=0;
for(int i=0;i<m;i++)
{
int l=RNG61()%n+1,r=RNG61()%n+1,d;
unsigned v=RNG61();
v%=(1<<30);
if(l>r)
swap(l,r);
d=dis[r-l+1];
r=r-(1<<d)+1;
mp[l][d]=max(mp[l][d],v);
mp[r][d]=max(mp[r][d],v);
maxd=max(maxd,d);
}
for(int i=maxd;i;--i)
for(int j=1;j<=n;++j)
{
if(j+(1<<i)-1>n)
break;
mp[j][i-1]=max(mp[j][i-1],mp[j][i]);
mp[j+((1<<i)>>1)][i-1]=max(mp[j+((1<<i)>>1)][i-1],mp[j][i]);
}
ans=0;
for(int i=1;i<=n;i++)
ans^=((long long)i)*mp[i][0];
printf("%lld\n",ans);
}
return 0;
}