using namespace std;
#include <bitset>
#define f first
#define s second
#define II inline
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define CC(v) memset((v),0,sizeof((v)))
#define mp make_pair
#define IN "robotei.in"
#define OUT "robotei.out"
#define oo 1684300900
typedef pair<int,int> pi;
int Di,K,X,Y,N,M,setX,setY;
int Lp[1024][1024],Ln[1024][1024],D[1024][1024],Xp[1024][1024],Yp[1024][1024],C[1024],L[1024],S[1<<20];
II void scan()
{
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
scanf("%d%d%d%d%d%d%d%d",&Di,&K,&X,&Y,&N,&M,&setX,&setY);
--N,--M,--Di;
}
II void next(pi &x)
{
x.f = (x.f*x.f + setX) % (N+1);
x.s = (x.s*x.s + setY) % (M+1);
}
void g(pi a,pi b,int per)
{
}
II void make(int x,int y)
{
int lg(0),p,poz(-oo),per(1),poz2(-oo);
pi a,b;
a = b = mp(x,y);
next(a);next(b);next(b);
for(;a != b;next(a),next(b),next(b) )
{
if(!Lp[a.f][a.s])
continue;
for(b = mp(x,y);b != a;next(b),++lg)
if( mp(X,Y) == b)
poz = lg;
for(b = mp(x,y);b != a;next(b),--lg)
{
Lp[b.f][b.s] = Lp[a.f][a.s];
Ln[b.f][b.s] = Ln[a.f][a.s] + lg;
Xp[b.f][b.s] = Xp[a.f][a.s];
Yp[b.f][b.s] = Yp[a.f][a.s];
if(poz>=0)
D[b.f][b.s] = poz--;
if(D[a.f][a.s] != oo)
D[b.f][b.s] = D[a.f][a.s] + lg;
}
return;
}
for(next(b=a);b != a;next(b),++per)
if( mp(X,Y) == b)
poz2 = per;
if(mp(X,Y) == a)
poz2 = 0;
for(b = mp(x,y);b != a;next(b),++lg )
if(b == mp(X,Y) )
poz = lg;
for(b = mp(x,y);b != a;next(b) )
{
if(poz>=0)
D[b.f][b.s] = poz--;
g(b,a,per);
Xp[b.f][b.s] = a.f;
Yp[b.f][b.s] = a.s;
Lp[b.f][b.s] = per;
Ln[b.f][b.s] = lg--;
}
if(poz2 != -oo)
D[a.f][a.s] = poz2--;
p = per;
for(next(b=a);b != a;next(b) )
{
if(poz2 != -oo)
D[b.f][b.s] = poz2<0?poz2=per-1:poz2--;
Xp[b.f][b.s] = a.f;
Yp[b.f][b.s] = a.s;
Lp[b.f][b.s] = per;
Ln[b.f][b.s] = --p;
}
}
II void count()
{
FOR(i,0,N)
FOR(j,0,M)
{
int nr(0),k(K),mul = L[i] * C[j];
if(!mul)
continue;
if(k >= D[i][j] && Ln[i][j] > D[i][j])
++nr;
k -= min(K,Ln[i][j]);
int ii(Xp[i][j]),jj(Yp[i][j]);
if(!Ln[i][j])
ii=i,jj=j;
if(D[ii][jj] < Lp[ii][jj])
{
nr += k / Lp[ii][jj];
k -= k / Lp[ii][jj] * Lp[ii][jj];
if(k >= D[ii][jj])
++nr;
}
S[nr] += mul;
}
}
II void solve()
{
memset(D,100,sizeof(D));
FOR(i,0,N)
FOR(j,0,M)
if(!Lp[i][j])
make(i,j);
FOR(i,0,max(N,M))
L[i] = C[i] = 1;
count();
--K;
CC(L);CC(C);
FOR(i,N+1,Di)
++L[(i*i + setX) % (N+1)];
FOR(j,0,Di)
++C[(j*j + setY) % (M+1)];
count();
CC(L);CC(C);
FOR(i,0,N)
++L[(i*i + setX) % (N+1)];
FOR(j,M+1,Di)
++C[(j*j + setY) % (M+1)];
count();
if(X>N || Y>M)
++S[1],--S[0];
FOR(i,0,K+2)
if(S[i])
printf("%d %d\n",i,S[i]);
}
int main()
{
scan();
solve();
return 0;
}