#include <bits/stdc++.h>
#define C make_pair
#define ll long long
#define all(a) a.begin(),a.end()
#define name "task"
#define ln "\n"
using namespace std;
const ll N=1e6+9,maxN=3*1e5+9;
ll n,m,q;
ll a1,b1,c1;
ll f1[N],f2[N],f[N];
void findmod(){
	f1[0]=f2[0]=f[0]=1;
	for(int i=1;i<=maxN;++i){
		if(i%3==1){
			f[i]=f[i-1];
			f1[i]=f1[i-1]+1;
			f2[i]=f2[i-1];
		} else if(i%3==2){
			f[i]=f[i-1];
			f1[i]=f1[i-1];
			f2[i]=f2[i-1]+1;
		} else if(i%3==0){
			f[i]=f[i-1]+1;
			f1[i]=f1[i-1];
			f2[i]=f2[i-1];
		}
	}
}
ll power(ll a,ll b,ll mod){
	if(b==0)
		return 1;
	if(b==1)
		return a;
	ll ans=1;
	while(b){
		if(b%2==1) ans=((ans%mod)*(a%mod))%mod;
		a=((a%mod)*(a%mod))%mod;
		b>>=1;
	}
	return ans%mod;
}
void solve(){
	findmod();
	cin>>n>>m>>q;
	cin>>a1>>b1>>c1;
	ll x1=power(c1,a1,m-1)%(m-1);
	ll pw1=power(b1,x1,m)%m;
	
	ll x2=power(a1,b1,m-1)%(m-1);
	ll pw2=power(c1,x2,m)%m;
	
	ll x3=power(b1,c1,m-1)%(m-1);
	ll pw3=power(a1,x3,m)%m;
	//cout<<pw1<<" "<<pw2<<" "<<pw3<<ln;
	for(int i=0;i<q;++i){
		ll ans=0;
		ll l,r; cin>>l>>r;
		ans+=(f[r]-f[l-1])*pw1;
		ans+=(f2[r]-f2[l-1])*pw2;
		ans+=(f1[r]-f1[l-1])*pw3;
		//cout<<(f[r]-f[l-1])<<" "<<(f1[r]-f1[l-1])<<" "<<(f2[r]-f2[l-1])<<ln;
		cout<<ans<<ln;
	}
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	if(fopen(name".inp","r")){
		freopen(name".inp","r",stdin);
		freopen(name".out","w",stdout);
	}
	solve();
}
